Как программно использовать ajax с компонентами Primefaces - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь создать программные компоненты Primefaces UIComonents и каким-то образом я не могу получить данные в Backing Bean.Не уверен, что это Ajax или значение, которое я установил для InputText.Мой код, который я хочу написать программно:

<p:inputText id="id_test" value="#{myBean.value}">
    <p:ajax />
</p:inputText>

Вот как я пытался решить проблему:

private String value; // Getter&Setter


public void buildComponent(){
    FacesContext fc = FacesContext.getCurrentInstance();
    Application ap = fc.getApplication();

    InputText inputText = (InputText) ap.createComponent(fc, "org.primefaces.component.InputText", "org.primefaces.component.InputTextRenderer")
    inputText.setValue(value);
    inputText.setId("id_test");

    AjaxBehavior ajaxBehavior = (AjaxBehavior) ap.createBehavior(AjaxBehavior.BEHAVIOR_ID);
    inputText.addClientBehavior(inputText.getDefaultEventName(), behavior);
}

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Вам нужно будет создать выражение ValueExpression, которое разрешается в вашем свойстве бина.Как еще ваш динамический ввод должен знать, куда отправлять входные значения?

Вместо:

inputText.setValue(value);

Сделайте это:

ExpressionFactory expressionFactory = FacesContext.getCurrentInstance()
  .getApplication().getExpressionFactory();
ValueExpression veBinding = expressionFactory.createValueExpression("#{myBean.value}", String.class);
inputText.setValueExpression("value", veBinding);
0 голосов
/ 26 ноября 2018

Я не уверен, что вы собираетесь делать, но может быть лучше визуализировать компонент динамически, чем создавать его.Примерно так:

<p:inputText id="id_test" value="#{myBean.value}" rendered="#{myBean.isSomeCondition">
    <p:ajax />
</p:inputText>  

или

<p:inputText id="id_test" value="#{myBean.value}" rendered="#{myBean.value != 'whatever'">
    <p:ajax />
</p:inputText>  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...