【发布时间】:2015-10-27 03:11:21
【问题描述】:
简单的 Spring MVC 应用程序。我想填充一个表单:在我的 JSP 中选择一个在我的控制器中填充的地图。
在我的 JSP 中,form:select 没有任何选项。如果我从 chrome 检查 HTML 元素,则不会出现任何选项。在我的项目的其他地方,同样的方法也有效,但在这种情况下,它是一个枚举。
简要代码sn-ps如下:
// Domain Class
public class Expense {
String attributeSelectedFromJSP;
Map<String,String> attributesToBeShownInJSP;
...
}
地图在构造函数中初始化。
在控制器中
Expense exp = new Expense();
// List allEcs is a list of String
for (ExpenseCategory e : allEcs) {
exp.attributesToBeShownInJSP.put(e.toString(), e.toString());
}
modelMap.addAttribute(
"expense", exp);
return new ModelAndView("addExp.jsp",
"command", exp);
在我的 JSP 中
<form:form method="POST" action="/addNewExpense"
modelAttribute="expense">
<div class="form-group">
<table >
<tr>
<td>
<form:label path="attributeSelectedFromJSP">Select something: </form:label>
</td>
<td colspan="2">
<form:select path="attributeSelectedFromJSP" class="form-control">
<form:options items="${attributesToBeShownInJSP}" />
</form:select>
</td>
</tr>
对于同一类,其他字符串属性显示正确。问题仅与选择选项有关。相同的 sn-p 代码在我使用 ENUM 的另一个屏幕中可以正常工作。
【问题讨论】:
-
我认为您需要为attributesToBeShownInJSP 创建一个新映射。然后你应该把它添加到你的模型中,并从 items 属性中调用。
标签: spring jsp model-view-controller