【问题标题】:Passing a new object in Spring MVC model.addAttribute() method在 Spring MVC model.addAttribute() 方法中传递一个新对象
【发布时间】:2014-01-02 06:41:44
【问题描述】:

我正在从这里实施 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。等等

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

搜索.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" %>

谢谢。非常感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    Spring 的 form 标记库的 &lt;form:form&gt; 元素需要绑定模型属性以创建其路径。

    <form:form modelAttribute="owner"
    

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

    【讨论】:

    • 感谢 Sotirios 的回复
    猜你喜欢
    • 2021-03-10
    • 2019-03-22
    • 1970-01-01
    • 2021-12-10
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多