Программно получить значение выражения JSTL EL Context - PullRequest
3 голосов
/ 15 февраля 2012

Среда: JSF 2.0 (Mojarra 4.0), Facelets, Richfaces, Websphere 7.0

У меня есть пользовательский компонент inputText, который должен выполнять выражения EL в контексте EL JSTL.У меня особая ситуация, когда мне нужно 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>

ВМой пользовательский компонент Renderer Мне нужно оценить выражение на # {ячейке}.Эта переменная хранится в контексте EL JSTL (JSP?).Выполнение выражений в контексте 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);

Пример для контекста EL Facelets здесь .

Не могли бы вы указать мне решение для контекста JSTL EL?

Заранее спасибо.Кай

1 Ответ

0 голосов
/ 06 сентября 2012

Этот 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]}.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...