`
liyiye
  • 浏览: 416440 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

对于struts2的验证机制的(FieldError)一些理解

阅读更多

以前一直是用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(); 这样每次从新验证的时候就会把上次的错误信息清除掉。

而且重写该方法可以把你需要的数据在这里写好。

 

上面是我的一下看法,如果有更好的解决办法,请告诉我,谢谢

分享到:
评论
1 楼 lph128998 2008-12-11  
struts2在页面使用s标签,如果验证出现错误会自己显示出来的啊

相关推荐

    struts2 fielderror去掉样式

    NULL 博文链接:https://mzlly999.iteye.com/blog/1161501

    获取 STRUTS2 FIELDERROR

    STRUTS2 s:fielderror 会给我们软件开发人员带来很多不方便。而且STRUTS2提供的样式也很难调整(需要结合STRUTS2源码以及修改样式模板配置)。本人找了许多信息GOOGLE等 都没有得到满意的内容。很多人留言说 通过...

    Struts 2 取消 fielderror 系统默认样式

    NULL 博文链接:https://978182241.iteye.com/blog/1827062

    struts2 spring整合fieldError问题

    用到了校验框架,在jsp页面校验失败一次后,无论再次输入正确与否都跳转不到except page。

    如何自定义Struts2表单验证后的错误信息显示格式_好资源0分送

    前面一段时间学过一些Struts2的知识,感觉Struts2和1.x还是有很大的差别的,我还不好说1.x肯定会过时还是2.0会很快流行,这毕竟是需要作为导向的。 在Struts2中验证真的比较容易,可以在Action中直接写validate,也...

    struts2文件上传下载

    struts2文件上传与下载, &lt;s:fielderror&gt;&lt;/s:fielderror&gt; 文件"&gt;&lt;/s:file&gt; &lt;s:submit id="submit" value="sbumit"&gt;&lt;/s:submit&gt; &lt;/s:form&gt;

    struts2输入校验总结

    struts2输入校验总结,struts2自带的校验器,以及校验器不能做的check的处理的总结

    struts2 标签库 帮助文档

    Struts 2 标签库(文档手册) Tags-API-CLSW-JSP &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-...

    Struts2多文件上传与邮件附件发送

    struts.multipart.maxSize默认2M,当maximumSize大于2M时, 必须设置struts.multipart.maxSize的值大于maximumSize。 3.当上传的文件大于struts.multipart.maxSize时,系统报错 当上传的文件在struts.multipart....

    博客附件--包下载 struts2

    附件 附件 附件 moon5284 struts2.x 已经修改了fielderror的换行样式

    JSP_struts2标签大全

    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 ...

    低清版 大型门户网站是这样炼成的.pdf

    (Struts 2+Spring 2+Hibernate 3).pdf(完整版) 网上有高清版350M的。可以去下 http://115.com/file/be5gwid8 请于下载后 24H 内及时删除!请抱着学习的态度下载此资料。 总共900多页!!!!!!! 第1篇 ...

    Struts2+API+标签全解+网页说明

    非用户标签:数据访问、逻辑控制等。 AJAX标签:支持AJAX技术...fielderror标签:输出异常提示信息。 tabbedPanel:AJAX标签,生成HTML中的Tab页。 tree标签:生成一个树形结构。 treenode标签:生成树形结构的节点。

    struts2中simple主题下&lt;s:fieldError&gt;标签默认样式的移除方法

    主要给大家介绍了关于struts2中simple主题下标签默认样式的移除方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧

    validator_v10:游乐场验证器

    验证器——v10 前言 下载和介绍 ...参考文档 ...特色 通过使用验证标签或自定义验证程序进行跨段和跨结构验证 ...提取自定义的片段名称,例如可以指定在验证时提取JSON名称,进入其在结果FieldError中可用

    validator:

    提取自定义定义的字段名称,例如可以指定在验证时提取JSON名称,并将其在结果FieldError中可用 可自定义的i18n感知错误消息。 Web框架的默认验证器; 从gin中的v8升级到v9的方法请参见 安装 使用go get。 go get ...

    SPRING API 2.0.CHM

    FieldError FieldRetrievingFactoryBean FileCopyUtils FileEditor FileSystemResource FileSystemResourceLoader FileSystemXmlApplicationContext FilterDefinitionFactoryBean FixedLocaleResolver ...

Global site tag (gtag.js) - Google Analytics