以前一直是用struts1开发程序,近日看了一下struts2。在这里发表一下自己的一下看法,欢迎大家探讨一下。
struts2 采用配置文件的形式进行验证的,action的代码如下:
public class LoginAction extends com.opensymphony.xwork2.ActionSupport{
private String userName;
private String passwd;
private String vercode;
public String login()throws Exception
{
return "";
}
}
验证文件的名称是:LoginAction-login-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="userName" >
<field-validator type="requiredstring" >
<message>login用户名必填!</message>
</field-validator>
<field-validator type="regex" >
<param name="expression"><![CDATA[(\S{2,10})]]></param>
<message>您输入的用户名的长度必须在2到10之间</message>
</field-validator>
</field>
<field name="passwd" >
<field-validator type="requiredstring" >
<message>login密码必填!</message>
</field-validator>
</field>
<field name="vercode">
<field-validator type="requiredstring">
<message>login验证码必填!</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{6,6})]]></param>
<message>您输入的验证码只能是字母和数字,且长度必须在6位</message>
</field-validator>
</field>
</validators>
在页面提交一个form表单:
<form action="login.action" method="post" >
<table>
<tr>
<td><label>用户名:</label></td>
<td
><input type="text" name="userName
" value=""/>
</td>
<td>
<s:fielderror ><s:param>userName
</s:param></s:fielderror>
</td>
</tr>
<tr>
<td><label>密码:</label></td>
<td
><input type="password" name="passwd
" />
</td>
<td>
<s:fielderror><s:param>passwd
</s:param></s:fielderror>
</td>
</tr>
<tr>
<td><label>验证码:</label></td>
<td
><input type="text" name="vercode
" value="" />
</td>
<td>
<img src="authImg" id="authImg" onClick="refresh()" title="看不清?单击此处刷新" alt="验证码"/>
<s:fielderror><s:param>vercode
</s:param></s:fielderror>
</td>
</tr>
<tr>
<td colspan="2"><div align="right"><input type="submit" value="登陆"/>
</div></td>
</tr>
</table></form>
当你输入的字段不符合配置文件的规则,就会跳到配置的input页面里面。例如输入的用户名不符合规则,则会显示提示的信息在:<s:fielderror ><s:param>userName
</s:param></s:fielderror>里面。
有一个问题是:当你再次根据提示的信息,修改你的输入信息。还是不能提交,这是为什么呢?
原因是因为里面的fielderror的字段的信息没有清空。
有时但你需要从action里面读取一下数据,在页面显示的时候,如果你的输入信息错误,那你将读取不到action里面的信息,这是因为当验证没有通过的时候是读取不到action的东西,那当跳转到input的时候,就会有些数据读取不到了。
解决的办法是重写validate()方法。
你可以在该方法里面的开头加一句:clearErrorsAndMessages();
这样每次从新验证的时候就会把上次的错误信息清除掉。
而且重写该方法可以把你需要的数据在这里写好。
上面是我的一下看法,如果有更好的解决办法,请告诉我,谢谢
分享到:
- 2008-12-09 15:32
- 浏览 2278
- 评论(1)
- 论坛回复 / 浏览 (1 / 6622)
- 查看更多
相关推荐
NULL 博文链接:https://mzlly999.iteye.com/blog/1161501
STRUTS2 s:fielderror 会给我们软件开发人员带来很多不方便。而且STRUTS2提供的样式也很难调整(需要结合STRUTS2源码以及修改样式模板配置)。本人找了许多信息GOOGLE等 都没有得到满意的内容。很多人留言说 通过...
NULL 博文链接:https://978182241.iteye.com/blog/1827062
用到了校验框架,在jsp页面校验失败一次后,无论再次输入正确与否都跳转不到except page。
前面一段时间学过一些Struts2的知识,感觉Struts2和1.x还是有很大的差别的,我还不好说1.x肯定会过时还是2.0会很快流行,这毕竟是需要作为导向的。 在Struts2中验证真的比较容易,可以在Action中直接写validate,也...
struts2文件上传与下载, <s:fielderror></s:fielderror> 文件"></s:file> <s:submit id="submit" value="sbumit"></s:submit> </s:form>
struts2输入校验总结,struts2自带的校验器,以及校验器不能做的check的处理的总结
Struts 2 标签库(文档手册) Tags-API-CLSW-JSP <%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-...
struts.multipart.maxSize默认2M,当maximumSize大于2M时, 必须设置struts.multipart.maxSize的值大于maximumSize。 3.当上传的文件大于struts.multipart.maxSize时,系统报错 当上传的文件在struts.multipart....
附件 附件 附件 moon5284 struts2.x 已经修改了fielderror的换行样式
JSP_struts2标签大全 1.a 3 2.action 3 3. actionerror 4 4. actionmessage 5 5. append 5 6. bean 7 7.checkbox 7 8.checkboxlist 8 9. combobox 9 10. conponent 9 11. date 11 12. datetimepicker 12 13. debug ...
(Struts 2+Spring 2+Hibernate 3).pdf(完整版) 网上有高清版350M的。可以去下 http://115.com/file/be5gwid8 请于下载后 24H 内及时删除!请抱着学习的态度下载此资料。 总共900多页!!!!!!! 第1篇 ...
非用户标签:数据访问、逻辑控制等。 AJAX标签:支持AJAX技术...fielderror标签:输出异常提示信息。 tabbedPanel:AJAX标签,生成HTML中的Tab页。 tree标签:生成一个树形结构。 treenode标签:生成树形结构的节点。
主要给大家介绍了关于struts2中simple主题下标签默认样式的移除方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
验证器——v10 前言 下载和介绍 ...参考文档 ...特色 通过使用验证标签或自定义验证程序进行跨段和跨结构验证 ...提取自定义的片段名称,例如可以指定在验证时提取JSON名称,进入其在结果FieldError中可用
提取自定义定义的字段名称,例如可以指定在验证时提取JSON名称,并将其在结果FieldError中可用 可自定义的i18n感知错误消息。 Web框架的默认验证器; 从gin中的v8升级到v9的方法请参见 安装 使用go get。 go get ...
FieldError FieldRetrievingFactoryBean FileCopyUtils FileEditor FileSystemResource FileSystemResourceLoader FileSystemXmlApplicationContext FilterDefinitionFactoryBean FixedLocaleResolver ...