struts2验证的时候 为什么类型转换错误的时候不提示呢? 
我用了struts的标签库。但是我自己重写的validate()方法中的错误提示信息却都显示了。 
如果类型转换错误,应该框架自己显示啊?正常的应该提示Invalid field value for field“”? 
代码: 
public class RegisterAction extends ActionSupport { String username; 
String password; 
String repassword; 
int age; 
Date startDate; 
Date endDate; 
public String getUsername() { 
return username; 

public void setUsername(String username) { 
this.username = username; 

public String getPassword() { 
return password; 

public void setPassword(String password) { 
this.password = password; 

public String getRepassword() { 
return repassword; 

public void setRepassword(String repassword) { 
this.repassword = repassword; 

public int getAge() { 
return age; 

public void setAge(int age) { 
this.age = age; 

public Date getStartDate() { 
return startDate; 

public void setStartDate(Date startDate) { 
this.startDate = startDate; 

public Date getEndDate() { 
return endDate; 

public void setEndDate(Date endDate) { 
this.endDate = endDate; 
} public String execute() throws Exception { 
System.out.println("RegisterAction.execute()"); 
return this.SUCCESS; 
} public void validate() { 
System.out.println("RegisterAction.validate()"); if(null == username || username.trim().length() <5 || username.trim().length()>12) { 
this.addFieldError("username", "用户名的长度应为5-12"); 
} if(null == password || password.trim().length() <5) { 
this.addFieldError("password", "密码的长度应为5-12"); 
}else if(null == repassword || repassword.trim().length() <5) { 
this.addFieldError("repassword", "确认密码的长度应为5-12"); 
}else if(!password.equals(repassword)) { 
this.addFieldError("password", "两次输入的密码不一致!"); 

if(age == 0) { 
this.addFieldError("age","年龄不能为空"); 

if(age < 0 ||age >160) { 
this.addFieldError("age","您所输入的年龄不对"); 

if(startDate != null && endDate != null){ 
Calendar start = Calendar.getInstance(); 
start.setTime(startDate); Calendar end = Calendar.getInstance(); 
end.setTime(endDate); if(!start.before(end)) { 
this.addFieldError("startDate", "毕业日期应该在入学日期之前!"); 

} } 

========================================================================== 
jsp中用的是标签库: <s:form action="register"> 
<s:textfield name="username" label="username"> </s:textfield> 
<s:textfield name="password" label="password"> </s:textfield> 
<s:textfield name="repassword" label="password2"> </s:textfield> 
<s:textfield name="age" label="age"> </s:textfield> 
<s:textfield name="startDate" label="startDate"> </s:textfield> 
<s:textfield name="endDate" label="endDate"> </s:textfield> 
<s:submit label="submit"> </s:submit> 
</s:form> ================================================================================== 
配置文件: 
<action name="register" class="com.cfd.struts2.RegisterAction"> 
<result name="success">/success.jsp </result> 
<result name="input">/register_taglib.jsp </result> 
</action> 
===================================== 
为什么自己的错误都能显示,但是类型转换的错误就是不出呢? 而且明显已经类型转换错误了,居然还能提交!!!

解决方案 »

  1.   

     
    hancent(梨花剑君):我相当鄙视你!你看看你回答是什么?
    大家点击一下你回答的记录,除了3,就是3333333.都不明白就为了分啊?晕 
      

  2.   

    哎 这个问题还是我自己来说说吧 不知道其他人出现问题是怎么解决的  反正这个我问题后来证明程序本身没有问题  是引入的jar包的问题 具体情况,看博客说明了那些包的问题:
    http://blog.163.com/java_boy@126/blog/static/117663675200982114846713/edit/
      

  3.   

    http://blog.163.com/java_boy@126/blog/static/117663675200982114846713/edit/
      

  4.   

    提交是不是空值?
    对于类型转换,楼主可以对相应的类型写个converter
      

  5.   

    好像是struts2-core-2.0.11.jar与struts2-core-2.0.12.jar的区别
    你用的应该是struts2-core-2.0.12.jar
      

  6.   

    你页面没输出怎么显示???
    struts2的validate信息,都放在fielderror  一个map中,在页面添加<s:fielderror/>试试
      

  7.   

    就是用的本身的验证框架  是int类型的  所以没有必要自己  但是还是出错了 就是和jar包的关系
      

  8.   

    我也遇到一个诡异的问题:
    STRUTS2。1。LINUX下,DATE类型,转换异常。WINDOWS和另外的LINUX下没有问题。
      

  9.   

    我的意思就是 加入一个输入框要求的是int类型的  但是我输入string ,例如:afd 等等的。按照常理说 应该出现错误的 因为struts本身具有这个转换机制 是会报错的  但是我的却执行过去了 而表单也提交了 没有报错 这就不对了 
      

  10.   

    都配置好了 呵呵  谢谢了 这个问题解决了 就是 struts jar包的问题 。
    谁oralce 比较好? 我遇到一个难题:
    表单提交的时候 总是执行不过去,在pstat.executeUpdate();这一句上就卡住了,程序就不往下执行那个了,我打印了传入的参数,也都是正确的。有时候行,有时候不行。但是不行的都是出现中文的时候,但是中文有时候行。有时候中文执行了一条过去了,后面的就都行了。但是等我把数据库里面的刚才插入的数据删除了,我在执行就又不行了。我试了好多次了。都是这样的。我不知道是什么问题,请教高手。这个问题比较棘手 主要是问题的不确定性。而且没有报错。 
    如果谁知道也可以加我QQ给我讲解 ,谢谢了 QQ:406635982