如何使用jstl el调用动态嵌套属性

时间:2015-06-12 14:25:20

标签: java jsp jstl

如果你想使用动态密钥从特定bean调用getter方法,你可以这样使用:

${bean[getterName]}

但是如果你想用动态名称调用双嵌套或三重嵌套属性它是如何工作的,是否可能?

${bean.propertyA.propertyB} WORKS
${bean[propertyA.propertyB]} DOES NOT WORKS
<c:set var="dynamicKey" value="propertyA.propertyB" />
${bean[dynamicKey]} DOES NOT WORKS

更新:

现在我们正在那样处理:

<c:forTokens items="${property}" delims="." var="item">   
    <c:set var="value" value="${value[item]}" />
</c:forTokens>

2 个答案:

答案 0 :(得分:1)

带有嵌套属性的点表示法与括号表示法:

${bean.propertyA.propertyB}
${bean[propertyA.propertyB]} ==> Not right, instead
${bean["propertyA"]["propertyB"]}

您使用JSTL的示例:

<c:set var="dynamicKey" value="${bean['propertyA']['propertyB']}" />
<c:out value="${dynamicKey}" />

答案 1 :(得分:0)

两年后我们就这样离开,因为它似乎对性能没有太大影响。

<c:forTokens items="${property}" delims="." var="item"> <c:set var="value" value="${value[item]}" /> </c:forTokens>