Вызов метода JSF 2.0 с аргументом из var dataGrid - PullRequest
2 голосов
/ 26 декабря 2010

Я использую простые лица с лицевыми гранями и у меня есть вопрос:

например, у меня есть dataGrid, и я хочу вызвать метод bean-компонента, зарегистрированного в face-config, для включения некоторого динамического содержимого:

<p:dataGrid var="provider" value="#{paymentFormBean.providers}">
   <ui:include src="contentFactory.getSpecificForm('some attribute')"/>
</p:dataGrid>

Как я могу вызвать метод getSpecificForm с аргументом из var of dataGrid? Что-то вроде:

<p:dataGrid var="provider" value="#{paymentFormBean.providers}">
   <ui:include src="contentFactory.getSpecificForm(provider.formName)"/>
</p:dataGrid>

ОБНОВЛЕНИЕ: если я пытаюсь вызвать метод в actionListener любого компонента в dataGrid:

<p:commandLink update="details" actionListener="#{contentFactory.getSpecificForm(provider.formName)}" /> 

тогда атрибут передается корректно, но в пользовательском интерфейсе: include значение пусто

Может ли кто-нибудь мне помочь? Спасибо

Ответы [ 2 ]

1 голос
/ 26 декабря 2010

Просто сделайте ContentFactory управляемым бобом

@ManagedBean
@RequestScoped // Or whatever
public class ContentFactory {

    public String getSpecificForm(String formName) {
        return null; // TODO: implement.
    }

}

так что вы можете использовать EL для его вызова

<ui:include src="#{contentFactory.getSpecificForm(provider.formName)}" />

Обновление: Я забыл, ui:include внутри повторителя пользовательского интерфейса не работает. Попробуйте использовать c:forEach вместо p:dataGrid. Вам нужно будет только применить / вложить нужные компоненты и / или HTML / CSS самостоятельно внутри c:forEach.

<html xmlns:c="http://java.sun.com/jstl/core">
...

<c:forEach var="provider" items="#{paymentFormBean.providers}">
    <ui:include src="#{contentFactory.getSpecificForm(provider.formName)}" />
</c:forEach>
0 голосов
/ 26 декабря 2010

Попробуйте Реализация JBoss EL

В файле web.xml добавьте следующий контекст-параметр:

<context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>
...