【问题标题】:Programmatically get expression value of JSTL EL Context以编程方式获取 JSTL EL 上下文的表达式值
【发布时间】:2012-03-06 15:32:52
【问题描述】:

环境:JSF 2.0 (Mojarra 4.0)、Facelets、Richfaces、Websphere 7.0

我有一个自定义的 inputText 组件,它需要在 JSTL EL 上下文中执行 EL 表达式。我有一种特殊情况,我需要 JSTL "foreach" 来创建一个复杂的表(不能使用 "a4j:reapeat")。

自定义组件示例:

<c:forEach var="cell" items="#{line.cellDescriptorList}" >
        <rich:column>
            <k:inputText onkeyup="#{cell.onKeyup}" id="#{cell.jsfId}" value="#{cell.wert.wert}">
                <f:converter converterId="PercentageConverterBigDecimal" />
            </k:inputText>
        </rich:column>
</c:forEach>

在我的自定义组件渲染器中,我需要评估 #{cell} 上的表达式。此变量存储在 JSTL (JSP?) EL 上下文中。 在 JSF EL 上下文或 Facelets EL 上下文中执行表达式工作得很好。 但是如何以编程方式访问 JSTL EL 上下文?

JSF EL 上下文示例:

final ELContext elContext = facesContext.getELContext();
final Application application = facesContext.getApplication();
ExpressionFactory expressionFactory = application.getExpressionFactory();
ValueExpression exp = expressionFactory.createValueExpression(elContext, expression, Object.class);
Object result = exp.getValue(elContext);

Facelets EL 上下文 here 的示例。

能否请您指出 JSTL EL 上下文的解决方案?

提前致谢。 启

【问题讨论】:

    标签: jsf jsf-2 jstl custom-component


    【解决方案1】:

    这个 JSP 有什么帮助吗?

    <%@ page import="java.util.Arrays,javax.el.*" %>
    <jsp:useBean id="list" class="java.util.ArrayList" />
    <jsp:useBean id="newList" class="java.util.ArrayList" />
    <%
      list.addAll(Arrays.asList("red","green","blue"));
      newList.addAll(Arrays.asList("brown", "yellow", "purple"));
      JspFactory jspFactory= JspFactory.getDefaultFactory();
      ExpressionFactory expFactory = jspFactory.getJspApplicationContext(application).getExpressionFactory();
      ELContext elContext =  pageContext.getELContext();
      ValueExpression valueEx = expFactory.createValueExpression(elContext, "${list}",String.class);
    %>
    My favorite colors are ${list[0]}, ${list[1]}, and ${list[2]}.<br/>
    <% valueEx.setValue(elContext, newList); %>
    No, I changed my mind. I like ${list[0]}, ${list[1]}, and ${list[2]}.
    

    【讨论】:

      猜你喜欢
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多