gpt4 book ai didi

jsf - 以编程方式获取 JSTL EL Context 的表达式值

转载 作者:行者123 更新时间:2023-12-05 01:15:42 25 4
gpt4 key购买 nike

环境: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 上下文的解决方案吗?

提前致谢。

最佳答案

这个 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]}.

关于jsf - 以编程方式获取 JSTL EL Context 的表达式值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9290895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com