VVL1295

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  在 JSP 页面引入标签:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

  表单标签:

      <form:form action="/SpringWebMVCDemo/login/checkid" method="POST" modelAttribute="user">
          用户名:<br/>
        密码:<form:input path="password"/><br/>
        职员:<form:input path="employee"/><br/>
        资产:<form:input path="asset"/><br/>
        电话号码:<form:input path="phoneNumber.content"/><br/>
          <input type="submit" value="登陆">
      </form:form>

   需要注意的是,显示表单,请求的方法不是必须为 GET(但通常是 GET),且请求与必须要存在绑定的表单对象,比如这个例子,绑定的表单对象对应的模型属性名为“user”,那么请求域就要存在属性名为“user”的属性,否则会出现错误:Neither BindingResult nor plain target object for bean name 'command' available as request attribute;因为 Spring MVC 默认使用 Spring 的 form 标签要进行表单的回显,所以显示表单时必须在请求域存在表单绑定的对象,而内部的做法就是看请求域是否存在名字与表单绑定的 modelAttribute 属性名相同的属性;

  其他标签:

  Spring <form:errors />

    用于显示数据绑定的错误信息,前端代码:

      <form:form action="/springmvc-2/login/checkid" method="POST" modelAttribute="user">
          <form:errors path="*"></form:errors>
          <br>
          用户名:<form:input path="username"/><br/>
        密码:<form:input path="username"/><br/>
        资产:<form:input path="asset"/><br/>
        电话号码:<form:input path="phoneNumber.content"/><br/>
          <input type="submit" value="登陆">
          <!-- path 对应字段的名字 -->
          
      </form:form>

  在 handler 方法中这样处理:有错误就转发到表单页面,就是上面代码所在的页面,错误信息就会显示在相应的位置,注意,handler 里面不要有重名的模型数据,在写这个例子的时候,往 model 加了一个新建的 User 对象,然后就不能显示错误信息,

猜想是 Spring MVC 会把错误信息放到请求域里面,然后解析自定义标签的时候,把请求域里面错误信息对应的属性的属性值会显示在页面上(做法应该是找到 user,然后找到与之绑定的 Errors 对象,从而获得错误信息,并进行显示),但是,此时的 User 对象并没有与 Errors 对象绑定(因为并不是作为入参的 user,是覆盖了作为入参的 user 的user),也就不能显示错误信息了。

  待定。

posted on 2016-09-09 11:21  bobo2018  阅读(117)  评论(0)    收藏  举报