困扰我两天的 action始终返回input字符串 split函数

前天使用Struts2写了一个类型转换器,用于将IP地址转换成字符串保存。 希望本人能够对同样是初学者的你有所帮助 我写的是一个登录模块,需要将用户的登录IP,登录时间上传到服务器 我的思路是这样的 首先由客户端输入账户密码,然后将账户,密码,IP,时间传给服务器。 action里面的代码如下 public class Login extends ActionSupport{ private String username; private String password; private Date logindate; private IpAddress idaddress; 下面省略set,get 。。。。。。 IpAddress是一个IP的坐标,就不写出来了。   但是在服务器端的action里面,居然没有执行到public String execute()函数,使得我百思不得其解,而且不管怎么输入,字符串都是返回的input。 在struts.xml里面的配置如下 <action name="login" class="action.Login"> <result>login_success.jsp</result> <result name="input">login_success.jsp</result> </action> 我不管怎么修改,都是返回的input的, 后来我发现在成功的页面,打印日期和IP地址 发现日期是可以正常显示,IP地址没有正确的显示,我第一感觉,是不是类型转换出问题了。下面我先发一下错误的类型转换代码,我们只看方法 public Object convertFromString(Map arg0, String[] arg1, Class arg2) { IpAddress ia = new IpAddress(); String[] abcd = arg1[0].split("."); ia.setA(Integer.parseInt(abcd[0])); ia.setB(Integer.parseInt(abcd[1])); ia.setC(Integer.parseInt(abcd[2])); ia.setD(Integer.parseInt(abcd[3])); return ia; } @Override public String convertToString(Map arg0, Object arg1) { IpAddress ia = (IpAddress)arg1; String str = "("+ia.getA()+"."+ia.getB()+"."+ia.getC()+"."+ia.getD()+")"; return str; } 因为我也不知道是那里的错误,所以我就逐步排查,发现程序在 String[] abcd = arg1[0].split(".")  这里出问题了。 而且arg1[0] 也是正常的。 然后下面获取abcd[0]  当然肯定也会出问题。 然后我就想会不会是这个函数有问题 split(".") 然后看了以下split的用法 stringObj.split([separator,[limit]]) 原来可选项separator是一个字符串或正则表达式。 然后在正则表达式中 (点).  表示匹配除“\r\n”之外的任何单个字符。要匹配包括“\r\n”在内的任何字符,请使用像“[\s\S]”的模式。 如果要用点,就必须转义 \\. 当然还有|符号也是要进行转义的 \\| 自此,问题已经解决,原来是类型转换错误,导致action始终返回input字符串。

爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img