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>
=====================================
为什么自己的错误都能显示,但是类型转换的错误就是不出呢? 而且明显已经类型转换错误了,居然还能提交!!!
我用了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>
=====================================
为什么自己的错误都能显示,但是类型转换的错误就是不出呢? 而且明显已经类型转换错误了,居然还能提交!!!
解决方案 »
- 关于Linux与windows socket通信
- 【急】struts2里面怎么设置request.setAtrribute("user",user)
- 关于mysql中的数据类型
- Jtable 数据更新
- 超简单菜鸟问题,哪位兄弟知道,单Tomcat支不支持Webservice?
- JS实现全选和反选
- errors.add("username",new ActionError("error.login.NullUserName"))的疑惑!!!
- 关于s2sh的整合,我使用了annotation映射hibernate数据库以及spring容器管理,但是不知道错在哪里?
- 新手写了个程序,有几个问题想请教大家!高分!高分!!(不够可以在加)!!
- 当一个网站每天的访问量达到几十万人的时候,你用什么方法保证你的系统不死机?
- 我是学java ee的,现在想学一个JavaScript的框架,有那么多,请大家推荐一个好吗,谢谢
- 如何在struts2表单里面设置时间保存在数据库里面
hancent(梨花剑君):我相当鄙视你!你看看你回答是什么?
大家点击一下你回答的记录,除了3,就是3333333.都不明白就为了分啊?晕
http://blog.163.com/java_boy@126/blog/static/117663675200982114846713/edit/
对于类型转换,楼主可以对相应的类型写个converter
你用的应该是struts2-core-2.0.12.jar
struts2的validate信息,都放在fielderror 一个map中,在页面添加<s:fielderror/>试试
STRUTS2。1。LINUX下,DATE类型,转换异常。WINDOWS和另外的LINUX下没有问题。
谁oralce 比较好? 我遇到一个难题:
表单提交的时候 总是执行不过去,在pstat.executeUpdate();这一句上就卡住了,程序就不往下执行那个了,我打印了传入的参数,也都是正确的。有时候行,有时候不行。但是不行的都是出现中文的时候,但是中文有时候行。有时候中文执行了一条过去了,后面的就都行了。但是等我把数据库里面的刚才插入的数据删除了,我在执行就又不行了。我试了好多次了。都是这样的。我不知道是什么问题,请教高手。这个问题比较棘手 主要是问题的不确定性。而且没有报错。
如果谁知道也可以加我QQ给我讲解 ,谢谢了 QQ:406635982