表单中的路径属性:select - spring 2.5 JSP

时间:2014-03-28 10:38:28

标签: spring jsp spring-mvc

我已经接受了学习spring(2.5)的任务,并且我遇到了使用属性的问题,当加载表单时,我不会得到任何预先选择的值。情况如下:

在我的系统中,我有公司,客户和用户。客户扩展公司,公司可以拥有用户列表(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:如何在我从一个类加载项目的表单上设置选定值,并希望select-filter来自另一个?

2 个答案:

答案 0 :(得分: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>

在控制器中:

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

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

答案 1 :(得分: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>