【问题标题】:Ajax update don't update my componentsAjax 更新不更新我的组件
【发布时间】:2013-06-05 22:00:31
【问题描述】:

我现在正在使用 <p:ajax> 来更新/填写我的组件,但是当我在 autoComplete 中选择 Object 时,ajax 不会更新我的组件。

我的代码如下:

   <p:panel header="Actviter le Projet">
<!--############# Chercher le Projet #############-->
    <div id="projetCompleteCenter" align="center">
    <h:outputLabel value="#{bundle.searchProject}  " />
    <p:autoComplete id="autoCompleteProjet" forceSelection="true"
    minQueryLength="3" value="#{projetMB.projet}"
        completeMethod="#{projetMB.completeProjet}" var="projet"
       itemLabel="#{projetMB.projet.nomProjet}" dropdown="true" >
     <p:ajax update="nomProjet nombreHeure dateDemarrage typeProjet" />
</p:autoComplete>
</div>

<p:separator />

<!--############# Donées du Projet #############-->
<div id="idPanel">
       <h:panelGrid columns="2">

    <p:outputLabel for="nomProjet" value="#{bundle.nomProjet} " />
                        <p:inputText id="nomProjet" value="#{projetMB.projet.nomProjet}"
                            required="true">
                            <f:validateLength minimum="3" />
                        </p:inputText>

                        <p:outputLabel for="nombreHeure"
                            value="#{bundle.nombreHeuresProjet} " />
                        <p:inputText id="nombreHeure"
                            value="#{projetMB.projet.nbHeuresProjet}" required="true">
                            <pe:keyFilter mask="num" for="nombreHeure" />
                        </p:inputText>

                        <h:outputLabel for="dateDemarrage"
                            value="#{bundle.dateDemarrageProjet} " />
                        <p:calendar id="dateDemarrage"
                            value="#{projetMB.projet.dateDebutProjet}" required="true"
                            pattern="dd/MM/yyyy" showOn="button" navigator="true"/>

                        <h:outputLabel for="typeProjet" value="Type du projet: " />
                        <h:selectOneListbox id="typeProjet"
                            value="#{projetMB.projet.type}">
                            <f:selectItems value="#{projetMB.typeProjetList}" var="pr"
                                itemLabel="#{pr.typeLabel}" itemValue="#{pr.typeValue}" />
                        </h:selectOneListbox>

                    </h:panelGrid>
                </div>

怎么了?

谢谢!

【问题讨论】:

  • 我认为您在 update="nomProjet nombreHeure dateDemarrage typeProjet" 中的 id 有误。
  • projetMBbundle 的范围是什么?
  • @RongNK 怎么了?见:Primefaces forum
  • 我觉得应该用逗号分隔
  • @AlexandreLavoie ,抱歉,我更改为进行测试并再次返回(再次查看代码)。 projetMB 是 ManagedBean 作用域,在高层管理对象 Projet。

标签: java jsf primefaces


【解决方案1】:

由于 UIInputs 的默认事件是 valueChange 事件,我认为您的问题是,您没有指定 p:ajax 的事件属性。在showcase 他们明确指定它,所以我认为p:autoComplete 的默认事件实际上是“itemSelect”事件。因此,您必须明确指定“itemSelect”事件:

<p:ajax event="itemSelect" update="nomProjet nombreHeure dateDemarrage typeProjet" />

【讨论】:

    猜你喜欢
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2012-08-18
    • 2019-08-03
    相关资源
    最近更新 更多