0

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

顺便说一句,UserEntity 有名称字段。如果我删除绑定并尝试user.name使用<c:out value="user.name" />它打印值

我哪里出错了,我需要做什么?谢谢

下面的代码不起作用。status[我必须在字段@NumberFormat 上调用格式化,所以必须使用变量尝试它]

<spring:bind path="user.name">
   <c:out value="${status.value}" />
</spring:bind>

得到这个错误 -->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

4 回答 4

1

您可以尝试使用LazyList而不是简单列表。如果你想看看这个例子,那么你可以参考我的一个问题。在问题陈述中,我提到了如何使用 LazyList。

希望对您有所帮助。干杯。

于 2013-01-08T12:25:08.763 回答
0

如果返回模型和视图,这是填充列表的正确方法

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......上面的代码是正确的并且应该可以工作。

于 2012-12-31T10:52:55.927 回答
0

调用 @NumberFormat 注释的正确答案是使用spring:eval expression标签

<spring:eval expression="user.balance" />

这会调用注释并执行注释中提到的格式化

于 2013-01-03T01:19:25.653 回答
0

我不认为你可以使用 spring:bind 在这种情况下,AFAIK 它试图从 ModelMap 中获取变量,它无法从“for”var 中获取它。

于 2013-01-04T18:54:33.480 回答