@Validations(
requiredStrings = {
@RequiredStringValidator(fieldName = "member.username", message = "用户名不允许为空!"),
@RequiredStringValidator(fieldName = "member.password", message = "密码不允许为空!")
}
)
@InputConfig(resultName = "error")
@SuppressWarnings("unchecked")谁能帮我解释下这是什么意思?
requiredStrings = {
@RequiredStringValidator(fieldName = "member.username", message = "用户名不允许为空!"),
@RequiredStringValidator(fieldName = "member.password", message = "密码不允许为空!")
}
)
@InputConfig(resultName = "error")
@SuppressWarnings("unchecked")谁能帮我解释下这是什么意思?
解决方案 »
- jsp页面在我的电脑上显示正常,在别人电脑上报404,什么原因
- HttpURLConnection 传参问题
- org.xml.sax.SAXException: The processing instruction target matching "[xX][mM][lL]" is not allowed.
- 哪位高人指点这个错误的原因及解决办法.在线等!!!急!!!
- 兄弟姐妹们都快来帮帮忙把!!!(在线等待)
- spring2.0配置hibernate3.0启动问题???
- 有关socket的getaddrinfo()函数
- 弱弱的问个问题:Spring MVC 中 addObject/addAttribute的变量作用域是?
- 本人欲做基于P2P技术的课题??请问有什么比较好的题目吗在这方面??急!!!!????
- 请问:Jndi需要单独启动吗?我已经启动了一个j2ee引用实现服务器实例,查找ejb是抛出没有初始上下文阿?
- 大家帮忙看看我正则表达式哪里写错了呢
- 谁有java itext的案例啊
参看这里
@RequiredStringValidator(fieldName = "oldPassword", message = "旧密码不允许为空!"),
@RequiredStringValidator(fieldName = "newPassword", message = "新密码不允许为空!")},
stringLengthFields = {
@StringLengthFieldValidator(fieldName = "newPassword", minLength = "4", maxLength = "20", message = "新密码长度只允许为4-20!")})@RequiredStringValidator代表进行字符串非空验证,fildName是指需要验证的参数名称,message为验证失败后显示的信息。
其实struts2中内置了很多验证方法,稍后会将这些方法列出来。写到这里,肯定有很多朋友会出现这样的问题:以上代码并不是只针对单个方法进行验证,而是对所有方法都进行了验证,其实我们可以对不需要验证的方法上写了@SkipValidation注解。。但这样又出现了问题,若有两个方法都需要进行验证但参数又不相同,那怎么办呢?
这样我们就需要配置struts2的validation interceptor的一个参数validateAnnotatedMethodOnly为true即可。
默认情况下struts2的配置中没有配置这个参数,所以需要我们自己重新配置一下defaultStack:代码如下:<interceptors>
<interceptor-stack name="defaultParentStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="multiselect"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<!-- 配置方法级别的校验 -->
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
<param name="validateAnnotatedMethodOnly">true</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>最后将这个interceptors设置为默认拦截器栈即可:<default-interceptor-ref name="defaultParentStack" />注意:将validateAnnotatedMethodOnly参数设置为true后,对于不需要进行验证的方法没必要使用@SkipValidation注解。此外,我们还可以在方法上配置@InputConfig(resultName = "error")可以配置验证失败后跳转的URL。
具体代码可以参考SHOP++源代码。Struts2内置验证方法:
@RequiredFieldValidator:字符串非空验证
@EmailValidator:E-mail验证
@UrlValidator:Url验证
@StringLengthFieldValidator:字符串长度验证
@intRangeFields:数值大小验证
@dateRangeFields:日期验证
@RegexFieldValidator:正则表达式验证
SHOP++验证实例:@InputConfig(resultName = "error")
@Validations(requiredStrings = {
@RequiredStringValidator(fieldName = "member.username", message = "用户名不允许为空!"),
@RequiredStringValidator(fieldName = "member.password", message = "密码不允许为空!"),
@RequiredStringValidator(fieldName = "member.email", message = "E-mail不允许为空!")},
requiredFields = {
@RequiredFieldValidator(fieldName = "isAgree", message = "必须同意服务协议!")},
stringLengthFields = {
@StringLengthFieldValidator(fieldName = "member.username", minLength = "2", maxLength = "20", message = "用户名长度必须在${minLength}到${maxLength}之间!"),
@StringLengthFieldValidator(fieldName = "member.password", minLength = "4", maxLength = "20", message = "密码长度必须在${minLength}到${maxLength}之间!")},
emails = {
@EmailValidator(fieldName = "member.email", message = "E-mail格式错误!")},
regexFields = {
@RegexFieldValidator(fieldName = "member.username", expression = "^[0-9a-z_A-Z\u4e00-\u9fa5]+$", message = "用户名只允许包含中文、英文、数字和下划线!")}
)
以上为SHOP++技术教程,来源:http://www.shopxx.net