JSTL动态表达式评估

时间:2014-03-18 15:44:33

标签: jsp jstl el

以下代码无效......

从Spring Controller我将一个字符串列表放入prefferedColumn,然后将其添加到Model(请求范围)中。另外,我将结果作为Product对象列表

<c:forEach items="${demoForm.results}" var="product">
    <c:forEach items="${prefferedColumn}" var="prefColunm">
        <c:set var="field" value="\$\{product.${prefColunm.colIdentifier}\}" />
        <td><c:out value="${field}" /></td>
    </c:forEach>
</c:forEach>

但我认为JSTL不会评估动态表达式。

c:out我的值为null。

如何评估动态JSTL表达式?

在Product.java中说我有近80个带有getter和setter的属性,但是这个登录用户只希望在列表页面上显示8个产品,其中8个属性名称存储在prefferedColumn列表中。

1 个答案:

答案 0 :(得分:0)

这是评估动态表达式的方法,因为JSTL不这样做

<% 
Object value = org.springframework.web.util.ExpressionEvaluationUtils.evaluateString(null, (String)pageContext.getAttribute("field"), pageContext); 
       out.println(value);
%>

然而,这有一个性能缺陷。