表单校验功能的实现步骤
1在actionform中重写校验函数:
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
System.out.println("==validate begin==");
ActionErrors errors=new ActionErrors();
if(userName==null||userName.equals("")){
errors.add(ActionMessages.GLOBAL_MESSAGE,new ActionError("html.errors.error1"));
}
System.out.println("==validate end==");
return errors;
}
将错误信息添加到一个全局变量ActionMessages.GLOBAL_MESSAGE中保存 在跳转的jsp页面捕获错误信息,只要errors对象中不为空就说明有错误即校验成功程序立即跳转到input指定页面不再执行action
其中html.errors.error1是在配置文件中的一个键值对的key可以在配置文件中设置其value值。
Struts-config.xml的配置信息:
<action path="/test" name="userForm" type="com.inspur.controller.UserAction" parameter="method" scope="request"
validate="true" input="/userTest.jsp"
>
<forward name="success" path="/success.jsp"></forward>
<forward name="deleteSuccess" path="/deleteSuccess.jsp"></forward>
</action>
Input指定有错误后跳转到的页面,validate指定校验。
在message-rescource标签中配置如下:
<message-resources parameter="com.yourcompany.struts.ApplicationResources" key="error" />
<message-resources key="" parameter="" />
在捕获错误信息的页面源代码如下:
首先导入标签库:<%@ taglib uri=" /tags/struts-html " prefix="html" %>
捕获错误语句:<html:errors bundle="error"/>
在导入标签库时对应的web.xml文件中的配置如下所示:
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
这样就是可以在jsp页面中使用html:errors标签了 uri在web.xml中映射到/WEB-INF/struts-html.tld标签库。
另外在添加<taglib>部分时在web.xml中会出错,此时应该删除<web-app>标签的所有版本信息仅保留<web-app></web-app>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" key="error" />
<message-resources key="" parameter="" />中的参数key="error"对应到错误信息捕获部分的bundle="error"必须对应才能成功捕获错误信息
在配置文件中:
html.errors.error1=do not allow null是错误信息键值对,在配置文件中可以存在多组键值对,可以在对表单多个元素校验时分别校验并且获得错误信息。