A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Struts的validate框架是如何验证的?

4 个回复

倒序浏览
黑马网友  发表于 2011-7-28 17:55:49
沙发
1. 在struts配置文件中配置具体的错误提示。
2. FormBean中的validate()方法具体调用。
应该就这样。。。
回复 使用道具 举报
黑马网友  发表于 2011-7-28 20:11:42
藤椅
楼主,您这样的问题,都应是自己去百度学来的。
如果随便在论坛中发个贴,是不是有些坐享其成了。
以后离开了黑马,是不是就找不到“度娘”了。
回复 使用道具 举报
黑马网友  发表于 2011-7-29 01:10:54
板凳
一、使用Action的validate()方法进行验证

使用了struts2框架后,可以在Action类中添加public void validate()方法对数据进行验证,如下所示:

public class TestAction extends ActionSupport{

private String name;
//setter && getter methods....

public String save() throws Exception {   
        if(hasFieldErrors()){   
            return INPUT;   
        }   
        return SUCCESS;   
    }
public void validate() {
   if (!name.trim().equals("sunny"))
    this.addFieldError("msg.name", "请输入正确的用户名.");   
}
}

输入页面form.jsp的主要内容:

<body>
<s:fielderror key="msg.name"/>
    <s:form action="test!save" name="test">
    <s:textfield name="name"></s:textfield>
    <s:submit></s:submit>
    </s:form>
</body>

struts.xml的相关配置:

    <action name="test" class="zz.TestAction">   
            <result name="input">form.jsp</result>
            <result name="success">test.jsp</result>   
        </action>  
       <action name="saveMd" class="zz.TestAction" method="save">   
            <result name="input">formMethod.jsp</result>   
            <result name="success">test.jsp</result>   
        </action>

此时,当在form.jsp中输入的内容未通过验证时(即输入的不是sunny),则会在form.jsp中显示提示信息。

二、使用struts2的验证框架

若使用validation框架,则不需要在Action中编写validate方法。

可以为一个Action编写一个验证配置文件,这里的 Action类名为TestAction,则配置文件名为TestAction-validation.xml,即类名-validation.xml的格式,或者为一个Action类中的方法编写一个配置文件,该配置文件的命名格式为类名-Action名-validation.xml,例如为上面的save方法编写一个验证文件,则该文件名为TestAction-saveMd-validation.xml(参考struts.xml文件中的saveMd的配置),这个配置文件的格式如下:

<?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="name">
        <field-validator type="requiredstring">
            <message>请输入姓名</message>
        </field-validator>
     </field>
</validators>

不需在页面中提供显示错误信息的标签,可以直接显示,测试文件的主要内容:

   <s:form action="save" name="test">   
        <s:textfield name="name" />
        <s:submit />   
    </s:form>

若同时提供了TestAction-validation.xml和TestAction-saveMd-validation.xml配置,将首先使用前一个文件进行检测,然后再根据后一个文件进行检测,可以从页面上显示的结果中看出这点。

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-29 19:48:15
报纸
[quote] 原帖由 [i]崔虎[/i] 于 2011-07-28 20:11 发表 [url=http://bbs.itheima.com/redirect.jsp?goto=findpost&pid=5949&ptid=739][img]http://bbs.itheima.com/images/common/back.gif[/img][/url]楼主,您这样的问题,都应是自己去百度学来的。
如果随便在论坛中发个贴,是不是有些坐享其成了。
以后离开了黑马,是不是就找不到“度娘”了。 [/quote]
哥们,澄清一下,我分早够了,也不是随便发,是因为提问题的人太少了,我在给大伙找问题呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马