我有一个包含另一个JSP文件的JSP文件。第一个JSP应该将Java类的实例(小部件)传递给第二个JSP文件。
这就是我所拥有的:
第一个JSP:
<jsp:include page="/container/SpecialWidget.jsp"> <jsp:param name="widget" value="${widget}"/> // widget is a .Java POJO </jsp:include>
第二个JSP:
${param.widget.id}
问题在于该代码给出了一个错误(它说它不知道ID)。如果我省略“ .id”部分,则页面将打印Java类的Java代码,这表示该类已正确传输。如果在例如$ {widget.id}中更改首页的$ {widget}规则,并尝试打印$ {param.widget},则一切正常。
我的问题:为什么我不能传递Java类并直接调用其属性?我究竟做错了什么?
编辑:错误消息:原因:javax.el.PropertyNotFoundException:在类型java.lang.String上找不到属性’id’
当您传递变量时,${widget}它将在请求时转换为字符串(widget.toString())。然后,此值作为字符串而不是原始java对象传递给第二个JSP。
${widget}
widget.toString()
访问对象值的一种方法是使用属性的值设置参数的值:
<jsp:param name="widgetId" value="${widget.id}"/>
然后在第二个JSP上使用下面的代码:
${param.widgetId}
您也可以将窗口小部件设置为请求 属性, 并在第二页上将其用作${widget.id}$ {request.widget.id}。我建议您使用第二种方法。
${widget.id}