p:selectOneMenu组件失去了对p:dataTable

时间:2018-08-16 17:11:11

标签: javascript primefaces

希望我清楚地提出了我的问题。我继承了相当复杂的jsf 2.x Web应用程序。有foo.xhtml个具有p:tabView组件的选项卡之一,其中包含可编辑的p:dataTable。每当我单击p:commandButton id="addBtn"按钮时,都会创建一行并允许我添加数据。

我遇到的麻烦是我必须在p:selectOneMenu组件上单击两次才能选择一个值(“ A”或“ B”),但这仅在特定条件下发生。希望在下面提出的两个案例可以清楚地解释我要描述的事件。

场景A)
1.我首先填写p:inputText输入字段。
2.点击下拉框(例如p:selectOneMenu),显示A和B,然后消失(失去焦点?)
3.再次单击下拉框,显示A和B。
4.我可以选择任何一个值。

场景B)
1.单击下拉框(例如p:selectOneMenu),它显示A和B(焦点保持在打开状态)。
2.我可以选择任何一个值。

这是main.xhtml

<h:form id="form">
    <ui:include src="/somepath/foo.xhtml"/>
</h:form>

这是foo.xhtml

<ui:composition ..>
    <p:tabView id="tabview">
        <p:tab id="fooTab">
            <h:panelGrid>
                <p:dataTable id="table" value=".." var="..">
                     <p:column id="nameColumn">
                         <p:inputText id="name" value="..">
                             <p:ajax event="blur" listener="#{fooController.actionA}" update=":tabview:table" />
                          </p:inputText>
                     </p:column>
                     <p:column id="choiceColumn">
                         <p:selectOneMenu id="choice" value="..">
                             <f:selectItem itemLabel="Select One" itemValue=""/>
                             <f:selectItem itemLabel="A" itemValue="true" />
                             <f:selectItem itemLabel="B" itemValue="false" />
                             <p:ajax event="change" listener="#{fooController.actionB"} update=":tabview:table" />
                     </p:column>
                     <p:column id="deleteColumn" headerText="Delete">
                        <p:commandButton id="deleteBtn" value="Delete" actionListener="#{fooController.actionC}" action="#{fooController.delete}" update="table" />
                     </p:column>
                </p:dataTable>
                <p:commandButton id="addBtn" value="Add" actionListener="#{fooController.actionD}" action="#{fooController.add" update=":tabview:table" />
           </h:panelGrid>
        </p:tab>
        <p:tab id="barTab">
          ...
        </p:tab>
    </p:tabView>

我尝试了各种方法来解决此问题,主要集中在p:inputText组件上的update属性,但是我还没有成功。我很难理解为什么会这样。非常感谢您的专业知识和时间来解答这个问题。

0 个答案:

没有答案