如何从请求属性获取表单选项

时间:2015-03-31 12:00:56

标签: jsp spring-mvc

我正在生成下拉值的ArrayList并将其分配给请求属性。我可以直接从我的jsp页面检索它还是需要做其他事情?因为我得到了

Type [java.lang.String] is not valid for option items exception

在我的控制器中:

request.getSession().setAttribute("LCCLSTypeCode", new ArrayList(Arrays.asList(arr)));

在我的jsp页面中:

<form:options items="${LCCLSTypeCode}" itemValue="idValue" itemLabel="displayValue"/>

我已经浏览过足以查看通过model.addAttribute

指定了arraylist的示例

我想知道我是否可以这样做,我正在做的错误是什么?

3 个答案:

答案 0 :(得分:0)

您必须将地图传递给会话,因为form:选项需要idvalue并显示值

答案 1 :(得分:0)

下拉列表需要id和value,因此您必须使用带键值对的map。

答案 2 :(得分:0)

将下拉列表添加到模型属性并在jsp页面中检索它,解决了错误。 但我的主要动机是将它附加到会话对象,这是我无法做到的。因为在我的表单提交中,我将再次重定向到同一页面。因此,如果我将下拉列表附加到会话对象,则不必每次都生成下拉列表并将其附加到模型对象。

控制器:

ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("menu1");
modelAndView.addObject("command", new ClauseData());
modelAndView.addObject("LCCLSTypeCode", newMap);
return modelAndView;

JSP页面:

<%
Map LCCLSTypeCode = (Map) request.getAttribute("LCCLSTypeCode"); 
System.out.println("LCCLSTypeCode:"+LCCLSTypeCode);
%>
.
.
.
.
<form:select path="typeCode">
<form:options items="<%=LCCLSTypeCode%>" itemValue="idValue" itemLabel="displayValue"/>
</form:select>

但是现在我得到一个不同的例外,我将其作为separate question

发布