1

我已经为此苦苦挣扎了两天,但没有成功,我认为现在是时候寻求您的帮助了。但首先,这就是我正在使用的:

  • JSF 2 莫哈拉 2.1.1
  • Primefaces 3.4.2
  • 网豆 7.1.1
  • 雄猫 7.0.37

现在,问题是:我有一个主页,它由使用多个<ui:include .. />标签的其他几个页面组成,如下所示:

<ui:composition template="/resources/templates/template1.xhtml">          
    <ui:define name="appData">
        <p:panelGrid columns="1" id="contenidoAplicacion" styleClass="noborder">
            <h:form id="fNewPerson">
                <p:panel header="New employee" style="min-height:40em">
                    <ui:include src="./forms/personal.xhtml" />
                    <p:accordionPanel  styleClass="noborder" activeIndex="3">
                        <p:tab id="tabSomeData" title="Identidad profesional" >
                            <ui:include src="./forms/formSomeData.xhtml" />
                        </p:tab>
                         ....
                         ....
    </ui:define>
</ui:composition> 

personal.xhtm 文件如下所示:

<p:panelGrid>
    <p:row>
        <p:column >
            <h:outputLabel value="Field1"/>
            <p:inputText label="Field1" id="field1" value="#{dataBacking.selectedPerson.field1}" tabindex="1"
                         required="true" size="10" >
                <f:convertNumber for="field1" integerOnly="true" groupingUsed="false"/>
            </p:inputText>
            <p:inputText id="field2" value="#{dataBacking.selectedPerson.field2}" tabindex="2" required="true" size="1" maxlength="1" >
                <p:ajax event="keyup" listener="#{dataBacking.check}" 
                        process="field1 field2" partialSubmit="true" 
                        update="field1 field2 photo"/>
            </p:inputText>
        </p:column>
        <p:column rowspan="5" >
            <p:graphicImage id="photo" value="#{dataBacking.selectedPerson.photo}" width="90" />
        </p:column>
    </p:row>
    ...

</p:panelGrid>

类中的check()方法dataBacking无关紧要,因为它只检查field1和 是否field2符合某些规则并且它是否正常工作。第一次加载主页时出现问题。在这种情况下,<p:ajax />personal.xhtml 中的组件不起作用。我必须重新加载页面(只需按 F5 键),这一次它可以正常工作。

我一直在更改组件的一些属性,但似乎没有任何效果。我真的不知道还能做什么。任何形式的帮助将不胜感激。

已编辑。又过了一天,我认为问题与组件无关Primefaces ajax,正如问题的标题所暗示的那样。我通过以下两个事实得出了这个结论:

  • 组件的行为<f:ajax .../>保持不变。
  • 我发现相对于我第一次加载页面时的视图没有持久化。我会试着解释一下自己。

DataBacking 类已定义其范围,view以便页面在向用户显示期间可以“看到”所有属性和方法。但是,我注意到构造函数被调用了两次:第一次加载页面(然后,没有成功调用类的方法)和刷新页面时。在最后一种情况下,页面和类的行为都是预期的。

4

0 回答 0