在Spring MVC model.addAttribute()方法中传递一个新对象

时间:2013-12-14 14:21:35

标签: spring jsp java-ee spring-mvc controller

我正在从这里实施Spring PetClinic项目

http://docs.spring.io/docs/petclinic.html

我有一点疑问,用户点击欢迎页面中的查找所有者页面。

处理请求的控制器代码

@RequestMapping(value = "/owners/search", method = RequestMethod.GET)
    public String setupForm(Model model) {
        model.addAttribute("owner", new Owner());
        return "owners/search";
    }

现在控件被移动到Search.jsp页面,该页面还允许用户添加新的所有者。

我怀疑为什么在model.addAttribute中放置了一个新的所有者对象?

model.addAttribute("owner", new Owner());

有什么需要?为什么流不直接导航到Search.jsp

Owner类具有所有者的属性,如firstName,lastName。等

如果您在代码中需要更多信息,请提供建议。我会把它放在这里。

search.jsp的

<%@ include file="/WEB-INF/jsp/includes.jsp" %>
<%@ include file="/WEB-INF/jsp/header.jsp" %>


<h2>Find Owners:</h2>

<spring:url value="/owners" var="formUrl"/>
<form:form modelAttribute="owner" action="${fn:escapeXml(formUrl)}" method="get">
  <table>
    <tr>
      <th>
        Last Name: <form:errors path="*" cssClass="errors"/>
        <br/> 
        <form:input path="lastName" size="30" maxlength="80" />
      </th>
    </tr>
    <tr>
      <td><p class="submit"><input type="submit" value="Find Owners"/></p></td>
    </tr>
  </table>
</form:form>

<br/>
<a href='<spring:url value="/owners/new" htmlEscape="true"/>'>Add Owner</a>

<%@ include file="/WEB-INF/jsp/footer.jsp" %>

感谢。我非常感谢你的帮助。

1 个答案:

答案 0 :(得分:3)

Spring form标记库的<form:form>元素需要绑定模型属性才能创建其路径。

<form:form modelAttribute="owner"

modelAttribute属性指向您添加的Owner模型属性。它显然没有使用它的价值(毕竟它是空的)。但是,它使用空对象作为模板(例如,字段名称)来生成name元素的<input>属性。