我有一个包含另一个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}规则,例如$ {widget.id},并且尝试打印$ {param.widget},则一切正常。
我的问题:为什么我不能传递Java类并直接调用其属性?我究竟做错了什么?
编辑:错误消息:原因:javax.el.PropertyNotFoundException:在类型java.lang.String上找不到属性'id'
当您传递变量时,${widget}
它将在请求时转换为字符串(widget.toString()
)。然后,此值作为字符串而不是原始java对象传递给第二个JSP。
访问对象值的一种方法是使用属性的值设置参数的值:
<jsp:param name="widgetId" value="${widget.id}"/>
然后在第二个JSP上使用下面的代码:
${param.widgetId}
您还可以将小部件设置为请求属性,并在第二页上将其用作${widget.id}
或$ {request.widget.id}。我建议您使用第二种方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句