PrimeFaces TreeTable没有响应表单提交

时间:2013-05-05 14:03:33

标签: jsf-2 primefaces treetable

我正在尝试使用primefaces Tree(和TreeTable,甚至更好,但结果相同)显示值。

<h:form id="treeTableForm">
    <p:commandButton actionListener="#{aircraftTypeHandler.tableSubmit}"
        update="@form" />
    <p:tree id="perfoTree" value="#{aircraftTypeHandler.perfosNode}"
        var="perfo" animate="true" style="min-width:300px;">
        <p:treeNode id="treeNode">
            <h:inputText value="#{perfo.type}" />
            <p:spacer width="20" height="0" />
            <h:inputText value="#{perfo.altitude}" />
            <p:spacer width="20" height="0" />
            <h:inputText value="#{perfo.mass}" />
            <p:spacer width="20" height="0" />
            <h:inputText value="#{perfo.distance}" />
            <p:spacer width="20" height="0" />
        </p:treeNode>
    </p:tree>
</h:form>

按下commandButton时,没有任何反应。 删除组件时,正确调用了backing bean方法。

你知道为什么吗? 如何使用“树状”组件显示数据,同时能够在将数据发送回辅助bean之前与数据进行交互?

感谢

1 个答案:

答案 0 :(得分:0)

如ÖmerFarukAlmalı所示

将按钮放在另一个表单中可以使事情发挥作用。至于解释,我让你解释一下:))

<h:form>
    <p:commandButton id="singleBtn" value="Save" icon="ui-icon-save"
            update="@form :treeTableForm" process="@form :treeTableForm"
            actionListener="#{aircraftTypeHandler.tableSubmit}" />
</h:form>

<h:form id="treeTableForm">
        <p:treeTable id="perfosTreeTable"
            value="#{aircraftTypeHandler.perfosNode}" var="perfo"
            scrollable="true" scrollHeight="300">

            <f:facet name="header">
                <h:outputText value="Performances" />
            </f:facet>

            <p:column headerText="Perfo Type">
                <h:outputText value="#{perfo.type}" />
            </p:column>

            <p:column headerText="Altitude">
                <h:outputText value="#{perfo.altitude}" />
            </p:column>

            <p:column headerText="Mass">
                <h:outputText value="#{perfo.mass}" />
            </p:column>

            <p:column headerText="Distance">
                <p:inputText value="#{perfo.distance}"
                    rendered="#{perfo.distance != null}">
                    <p:ajax event="blur" listener="#{aircraftTypeHandler.tableSubmit}" />
                </p:inputText>
            </p:column>
        </p:treeTable>
</h:form>