2012-02-15 47 views
3

环境的表达值:JSF 2.0(钻嘴鱼科4.0),Facelets的,RichFaces的,的Websphere 7.0编程得到JSTL EL上下文

我有一个自定义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> 

在我的自定义组件渲染我需要评估对#{}细胞的表达。该变量存储在JSTL(JSP?)EL上下文中。 执行表达式JSF EL上下文或Facelets EL上下文工作得很好。 但是,我怎样才能以编程方式访问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上下文的解决方案吗?

在此先感谢。 Kai

回答

0

此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]}.