2014-03-28 59 views
0

我已經把學習春天(2.5)的任務,我已經陷入了一個問題,使用屬性,其中,當表單加載時,我不會得到任何預先選定的值。所以情況如下:在窗體中的路徑屬性:select - spring 2.5 JSP

在我的系統中我有公司,客戶和用戶。客戶延伸公司,並且公司可以擁有用戶列表(getMethod是公開的,因此客戶也有一個用戶列表)。

因此,這是怎樣的形式,我.JSP選擇容貌:

<form:select multiple="true" id="selectAccountManager" path="${customer.users}"  cssClass="input select_img" > 
    <c:forEach items="${customerUsers}" var="user" >         
     <form:option value="${user.id}        
      <c:out value="${user.displayName}" />        
     </form:option 
    </c:forEach>           
</form:select> 

現在,我得到了path="${customer.users}"錯誤。如果我使用path="users"我的系統可以工作,但是當頁面加載時,我不會將表單中的任何值作爲「預先選擇」。我試過用path =「customer.users」,但是當我這樣做時,我在js-console中得到了一個referenceError。

這個.jsp映射到EditCustomerController其中customerUsers由

map.put("customerUsers", UserControlHelper.getAllUsers()); 

所以投入的地圖我想這是問題所在,因爲我總是從系統中獲取所有用戶?

TL; DR:如何在我從一個類加載項目並希望選擇過濾器來自另一個類別的表單上設置選定值?

回答

0

於是我發現了什麼問題了。

當我創建我的地圖時,我只把用戶放在那裏。用戶對象實際上映射的是用戶的id(我通過$ {user.id}檢索到的內容,如原始郵件中可以看到的那樣。我必須做的是以正確的方式創建路徑, :

控制器 - java的:

Map<Int,String> users = new HashMap<Int,String>(); 

for(User user: UserControlHelper.getAllUsers()){ 
    users.add(user.getId(), user.getDisplayName()) 
} 

model.put("customerUsers", users); 

和我的jsp:

<form:select path="users" items="${customerUsers}"></form:select> 
0

(首先,Spring 2.5的是舊的,我建議你使用3.2.x中甚至4.0.x版)

預先選擇的選項,你應該在模型上設置適當的字段和Spring將預自動選擇它。這樣的:

<form:form method="post" modelAttribute="myForm"> 
    <form:select multiple="true" path="users"> 
     <form:options items="${customerUsers}" itemLabel="displayName" itemValue="id" /> 
    </form:select> 
</form:form> 

和Controller:

User defaultUser = new User(1, "DEFAULT"); 
MyForm myForm = new myForm(); 

myForm.getUsers().add(defaultUser); 
model.addAttribute("myForm", myForm);