在我的JSP页面上,我有以下下拉列表:
<form:select path="companies" name="company">
<form:options items="${companies}" itemValue="name" itemLabel="name"/>
</form:select>
此列表显示Company对象的name属性。当我选择值并提交表单时,我的控制器会收到此属性。
我正在寻找如何在控制器中接收此对象而不是单个属性的方法。
答案 0 :(得分:0)
因此,首先,我建议使用公司ID(如果有),而不是公司名称作为我们从下拉列表中提交的值。您仍然可以将名称显示为描述,但将id作为值发送。 id通常是公司表中的主键,如果有的话。名字不是很独特。
然后,当您在Spring控制器方法中将此id作为参数接收时,您将获得用于呈现下拉列表并获取对象的相同列表的句柄。关于spring的事情是,对象模型只在默认情况下持久存在,因此用户呈现下拉列表的列表在用户发回id时会消失。第一个请求用于呈现页面,第二个请求是发送参数。因此,您需要在内存中保留此列表的时间长于请求。您可以通过将该列表保留在会话中来使该列表更长久。 Spring有一个注释,用于使会话级别的模型属性保持不变。请记住,只要用户登录,该对象就会存在于会话中,除非您将其删除。
我有点想知道你为什么要这个对象。通常情况下,id就是您所需要的,因为您在数据库中将其设置为首选的用户公司并且您已经完成了设置。但是,我无法告诉你要做什么。