我有一个包含用户的列表。我试图在JSP中打印它,但有些我无法使用spring:bind
来打印它。我得到一个例外。我尝试使用spring:bind
的原因是要调用@Formatting注释。
JSP中的代码
<c:forEach items="${users}" var="user" varStatus="status">
<spring:bind path="users[${status.index}].name">
<c:out value="${status.value}" />
</spring:bind>
</c:forEach>
控制器
ModelAndView modelAndView = new ModelAndView("go_some_JSP_page");
List<UserEntity> users = userManager.getAllObjects();
modelAndView.addObject("users", users);
BTW,UserEntity有名字字段。如果我删除绑定并尝试使用user.name
打印<c:out value="user.name" />
,则会打印值
https://github.com/hth/StatusInvoke.git
存在测试样本代码请查看landing.jsp第35行
如果你在部署它时遇到任何问题,请告诉我。
答案 0 :(得分:1)
我能让它工作的唯一方法是你绑定的bean路径是否在基本命令bean中。在我的情况下,我正在使用MyForm,它具有用户的getter和setter。 spring绑定标记似乎不在基本表单命令bean之外。
因此您的控制器方法需要更改为。
@RequestMapping(method = RequestMethod.GET)
public ModelAndView loadForm() {
ModelAndView modelAndView = new ModelAndView("landing");
MyForm myForm = new MyForm();
myForm.setUsers(populate());
modelAndView.addObject("myForm", myForm);
return modelAndView;
}
在你的jsp中有以下内容。
<form:form commandName="myForm">
<c:forEach var="user" items="${myForm.users}" varStatus="status">
<tr>
<td><spring:bind path="users[${status.index}].loginName">
<c:out value="${status.value}" />
</spring:bind></td>
<td><spring:bind path="users[${status.index}].balance">
<c:out value="${status.value}" />
</spring:bind></td>
</tr>
</c:forEach>
</form:form>
答案 1 :(得分:0)
调用@NumberFormat注释的正确答案是使用spring:eval expression
标记
<spring:eval expression="user.balance" />