如何将ajax事件附加到非ClientBehaviorHolder组件

时间:2017-04-24 10:05:20

标签: jsf primefaces

在表单中,我有p:inputTextp:colorPicker如下:

<h:outputText value="#{messages.titre}" />
<p:inputText value="#{beanPlanningRessource.equipe.typeRessource.titre}">
</p:inputText>
<h:outputText value="#{messages.couleur}" />
<p:colorPicker value="#{beanPlanningRessource.equipe.typeRessource.couleur}">
</p:colorPicker>

我有p:commandButton调用managedBean方法如下:

<p:commandButton widgetVar="ajouter_equipe" 
                             style="visibility: hidden;" 
                             actionListener="#{beanPlanningRessource.ajouterEquipe()}" process="@this"
                    update=":#{p:component('dataTableEquipe')}, :#{p:component('formEquipe')}, :msgs" >
            </p:commandButton>

这里的问题是托管bean中p:inputTextp:colorPicker中的值始终为null,因此在p:inputText我添加了这一行:

<p:ajax event="change" process="@this" />

现在使用beanPlanningRessource.equipe.typeRessource.titre中的值更新p:inputText

我仍然遇到的问题是p:colorPicker是非ClientBehaviorHolder组件,因此我无法将p:ajax附加到f:ajax', so the value attached to the: p:colorPicker {{1} (beanPlanningRessource.equipe.typeRessource.couleur`)始终为null。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

除了jquery之外,您还可以使用valueChangeListener

HTML:

<p:colorPicker valueChangeListener="#{beanPlanningRessource.colorChanged}" value="#{beanPlanningRessource.equipe.typeRessource.couleur}"/>

豆:

colorChanged(ValueChangeEvent event){
   String newColor = event.getNewValue(); 
   //do whatever you want with the new value
}