如何向 jsp:useBean 引用的 ArrayList 添加值?
在 JSP/JSTL 中,如何为 class="java.util.ArrayList" 的 usebean 设置值。
如果我尝试使用 c:set 属性或值,则会收到以下错误: javax.servlet.jsp.JspTagException:无效属性:“null”
In JSP/JSTL, how can I set values for a usebean of class="java.util.ArrayList".
If I try using c:set property or value, I get the following error:
javax.servlet.jsp.JspTagException: Invalid property in : "null"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这不可能直接实现。
和
标记允许您通过 setter 方法在完整的 javabean 中设置属性。但是,List
接口没有 setter,只有一个add()
方法。一个解决方法是将列表包装在一个真正的javabean中,如下所示:
并将其设置为
但这没有什么意义。如何正确解决取决于单独的功能需求。如果您想在 GET 请求时保留一些
List
,那么您应该使用预处理 servlet。创建一个 servlet,它在doGet()
方法中执行以下操作:当您通过 URL 调用该 servlet 时,该列表位于转发的 JSP 中,
无需即可使用老式的
标记。在 servlet 中,您可以自由地以通常的方式编写 Java 代码。这样,您就可以仅使用 JSP 进行纯演示,而无需通过
标记来吞噬/破解一些预处理逻辑。另请参阅:
That isn't directly possible. There are the
<c:set>
and<jsp:setProperty>
tags which allows you to set properties in a fullworthy javabean through a setter method. However, theList
interface doesn't have a setter, just anadd()
method.A workaround would be to wrap the list in a real javabean like so:
and set it by
But that makes little sense. How to solve it rightly depends on the sole functional requirement. If you want to preserve some
List
upon a GET request, then you should be using a preprocessing servlet. Create a servlet which does the following indoGet()
method:When you invoke the servlet by its URL, then the list is in the forwarded JSP available by
without the need for old fashioned
<jsp:useBean>
tags. In a servlet you've all freedom to write Java code the usual way. This way you can use JSP for pure presentation only without the need to gobble/hack some preprocessing logic by<jsp:useBean>
tags.See also: