我有一个包含用户的列表。我试图在JSP中打印它,但有些我怎么也无法打印它。获得此异常HTTP Status 500 - javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Neither BindingResult nor plain target object for bean name 'users[0]' available as request attribute
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" />
,则会打印值
我哪里出错了,我需要做什么?感谢
下面没有工作代码。 [我必须在字段@NumberFormat上调用格式,所以必须使用status
变量来尝试
<spring:bind path="user.name">
<c:out value="${status.value}" />
</spring:bind>
获取此错误 - &gt; javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Neither BindingResult nor plain target object for bean name 'user' available as request attribute
所以添加了一个bean绑定然后我得到了空表:(。我相信那是因为实例是空的。所以这似乎不是一个正确的方法。
@ModelAttribute("user")
public UserEntity userEntityBinding() {
return UserEntity.newInstance();
}
https://github.com/hth/StatusInvoke.git
存在工作代码如果您遇到任何问题,请告诉我。
这个问题已经解决了。谢谢你看。
答案 0 :(得分:0)
这样,如果返回了modelandview,则填充列表的正确方法是
ModelAndView modelAndView = new ModelAndView("go_some_JSP_page");
List<UserEntity> users = userManager.getAllObjects();
modelAndView.addObject("users", users);
这是引用列表的正确方法
<c:forEach items="${users}" var="user" varStatus="status">
<spring:bind path="user.name">
<c:out value="${status.value}" />
</spring:bind>
</c:forEach>
您的问题必须在其他地方是明确填充的名称字段,是否正在调用正确的jsp ...上面的代码是正确的,应该可以工作。
答案 1 :(得分:0)
调用@NumberFormat注释的正确答案是使用spring:eval expression
标记
<spring:eval expression="user.balance" />
这会调用注释并执行注释
中提到的格式设置答案 2 :(得分:0)
我认为你不能使用spring:bind在这种情况下,AFAIK它试图从ModelMap中获取变量,它无法从“for”var中获取它。
答案 3 :(得分:0)
您可以尝试使用LazyList
代替简单列表。如果您想查看示例,那么您可以参考我的question之一。在问题陈述中,我已经提到了如何使用LazyList。
希望能帮到你。欢呼声。