我有一个包含另一个JSP文件的JSP文件.第一个JSP应该将 Java类(小部件)的实例传递给第二个JSP文件. 这是我有的: 第一个JSP: jsp:include page="/container/SpecialWidget.jsp" jsp:param name="widget" value=
这是我有的:
第一个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()).然后将该值作为String传递到第二个JSP,而不是原始的java对象.访问对象值的一种方法是使用属性的值来设置参数的值:
<jsp:param name="widgetId" value="${widget.id}"/>
然后使用第二个JSP上的代码:
${param.widgetId}
您还可以将窗口小部件设置为请求属性,并在第二页上将其用作${widget.id}或${request.widget.id}.我建议你使用第二种方法.