当属性名称本身是动态变量时,如何获取bean属性的值

我正在尝试编写一个自定义JSPX标记,该标记从给定列表中的每个对象读取给定bean属性的值,并将该属性的名称作为JSP属性传递给该标记。标签看起来像这样:

<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core"

xmlns:jsp="http://java.sun.com/JSP/Page"

version="2.0">

<jsp:output omit-xml-declaration="yes"/>

<jsp:directive.attribute name="items" type="java.lang.Iterable"

required="true" description="The items whose properties are to be read"

rtexprvalue="true"/>

<jsp:directive.attribute name="propertyName" type="java.lang.String"

required="true" description="The name of the bean property to read"

rtexprvalue="true"/>

<c:forEach items="${items}" var="item">

<!-- This is the bit that doesn't work -->

<jsp:getProperty name="item" property="${propertyName}" />

</c:forEach>

</jsp:root>

问题在于标记的property属性jsp:getProperty似乎不接受表达式,而仅接受文字值。所以这可以工作,但对我没有用(因为直到运行时我才知道属性名称):

<jsp:getProperty name="item" property="firstName" />

我得到的错误是:

org.apache.jasper.JasperException: org.apache.jasper.JasperException:

PWC6054: Cannot find any information on property '${propertyName}' in

a bean of type 'com.example.FooBar'

谢谢你的帮助。

回答:

如果要使用动态属性名称,请使用大括号符号。

<c:forEach items="${items}" var="item">

${item[propertyName]}

</c:forEach>

以上是 当属性名称本身是动态变量时,如何获取bean属性的值 的全部内容, 来源链接: utcz.com/qa/410049.html

回到顶部