2014-01-07 37 views
0

在我看來,我有一個簡單的形式,這樣它的工作原理:彈簧模型屬性2.0標籤

<form:form modelAttribute="user" > 
     <form:input path="lastName"/> <br/> 
    </form:form> 

我試圖做一個標記來生成我的形式是這樣的:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> 

<%@ attribute name="model" required="true" type="com.myObject"%> 
    <form:form modelAttribute="model" > 

     <form:input path="lastName"/> <br/> 

    </form:form> 

這樣調用:

<%@ taglib prefix="ahead" tagdir="/WEB-INF/tags" %> 
<ahead:form model="${user}"></ahead:form> 

但它拋出一個異常: 無論BindingResult也不爲bean名稱「模型」可以作爲請求屬性平原目標對象

如果我的標籤我寫這篇文章:

<form:form modelAttribute="user" > 

它的作品,因爲我猜它找到的屬性爲「用戶」的模型

但我想使用屬性「模式」:

<%@ attribute name="model" required="true" type="com.myObject"%> 

,因爲它不會總是被稱爲模型相同。

我該如何做到這一點?

感謝

+1

當前您的表單總是查找名爲'model'的屬性,您應該使用'$ {model}'將其替換爲傳入的值。目前它被硬編碼爲** model **。 –

+0

@ M.Deinum不Spring的''元素接受'modelAttribute'請求屬性的名稱和'commandName'屬性? –

+0

謝謝M. Deinum我知道我不遠!你可以添加你的評論作爲迴應,所以我可以接受它! – jpprade

回答

0
<form:form modelAttribute="model" > 

您目前執行的標籤都有一個硬編碼名稱爲modelAttribute屬性它將始終是模式無論在屬性是傳遞的價值。

使其動態使用表達式而不是硬編碼值。

<form:form modelAttribute="${model}" > 

這將用名爲model的傳入屬性的值替換表達式。