黑马程序员技术交流社区

标题: 自习小问题:Struts的validate框架是如何验证的? [打印本页]

作者: 廖乃波    时间: 2011-7-28 17:52
标题: 自习小问题:Struts的validate框架是如何验证的?
Struts的validate框架是如何验证的?
作者: 匿名    时间: 2011-7-28 17:55
1. 在struts配置文件中配置具体的错误提示。
2. FormBean中的validate()方法具体调用。
应该就这样。。。
作者: 匿名    时间: 2011-7-28 20:11
楼主,您这样的问题,都应是自己去百度学来的。
如果随便在论坛中发个贴,是不是有些坐享其成了。
以后离开了黑马,是不是就找不到“度娘”了。
作者: 匿名    时间: 2011-7-29 01:10
一、使用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配置,将首先使用前一个文件进行检测,然后再根据后一个文件进行检测,可以从页面上显示的结果中看出这点。
作者: 匿名    时间: 2011-7-29 19:48
[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]
哥们,澄清一下,我分早够了,也不是随便发,是因为提问题的人太少了,我在给大伙找问题呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2