一尘不染

jsp:param与Java类

jsp

我有一个包含另一个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’


阅读 186

收藏
2020-06-08

共1个答案

一尘不染

当您传递变量时,${widget}它将在请求时转换为字符串(widget.toString())。然后,此值作为字符串而不是原始java对象传递给第二个JSP。

访问对象值的一种方法是使用属性的值设置参数的值:

<jsp:param name="widgetId" value="${widget.id}"/>

然后在第二个JSP上使用下面的代码:

${param.widgetId}

您也可以将窗口小部件设置为请求 属性, 并在第二页上将其用作${widget.id}$
{request.widget.id}。我建议您使用第二种方法。

2020-06-08