(12)简单数据校验:addFieldError

index.jsp:相当于用户登录页面,这里进行简写


  <body>
     简单数据校验<a href="user/user_add!add?name='HAHA'">添加用户</a>
  </body>

struct.xml

<struts>
        <package name="user" namespace="/user" extends="struts-default">


        <action name="user_add" class="com.front.action.UserAction">
           <result>
               /user_add_success.jsp
           </result>

            <result name="error">
               /user_add_error.jsp
           </result>
           </action>
    </package>


</struts>

UserAction

public class UserAction extends ActionSupport {
  //这种接收参数的方式:将传过来的数据(可以是URL数据,或者其他数据),在struct创建对象时,就能付好值,并且已经是转换好的
  //但是要注意设置的私有变量不能随意改名,因为传过来的数据是名称固定的。否则不能正常接收
    private String name;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    public String add(){
        if(name==null||!name.equals("admin")){

            this.addFieldError("name", "name is error");//Add an Action-level error message to this Action. 
            //this.addFieldError("name", "name is too long");用来验证map的值是个数组用的。
            return "error";
        }
        return SUCCESS;
    }



}

user_add_error.jsp

  <font color="red">在WEBRoot下的'property标签中图片对此进行了解释' </font><br/>
      User Add Error!
      <s:fielderror fieldName="name"></s:fielderror><!-- 在后端要取的名称 ,并不常用因为若不对其加样式,struct会自动添加一个默认的
      样式,这是不需要的。所以不常用-->
      <br/>

      <s:property value="errors"/><!--s:property: 用来取Debug中的Value Stack Contents、Stack Context的内容-->
      <!-- 显示{name=[name is error]},用来取属性名对应的属性值,这也是Map类型key=name value=name is error  -->

      <br/>
       <s:property value="errors.name"/><!-- 用来去map中某个键的值 结果为:[name is error] ,它是一个数组 -->

       <br/>
       <s:property value="errors.name[0]"/><!-- 取键为name的值(字符串数组)中的第一个值  结果为:name is error 
         取出的就是一个值,纯数据,可以对其任意加css、html
        -->
      <s:debug></s:debug>  
  </body>
posted @ 2017-11-07 11:02  测试开发分享站  阅读(146)  评论(0编辑  收藏  举报