spring:在List中使用绑定错误

时间:2012-12-31 10:28:12

标签: spring spring-mvc

我有一个包含用户的列表。我试图在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

存在工作代码

如果您遇到任何问题,请告诉我。

这个问题已经解决了。谢谢你看。

4 个答案:

答案 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。

希望能帮到你。欢呼声。