2013-05-05 2 views
0

Я пытаюсь для отображения значений с помощью primefaces дерева (и TreeTable, которые были бы даже лучше, но результат один и тот же)PrimeFaces 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, ничего случается. При удалении компонента корректно вызывается метод бэк-компонента.

Знаете ли вы, почему? Как я могу отображать данные с использованием «древовидных» компонентов и в то же время иметь возможность взаимодействовать с данными, прежде чем отправлять их обратно в бэкэнд?

благодаря

+0

Возможно, вы можете попробовать поместить свою кнопку за пределы установленной формы. –

+0

Что значит «ничего не происходит»? Запрос AJAX не отправляется? Что именно сбой в соответствии с вашими ожиданиями? Поработайте над этим более дружественным для разработчиков способом. – skuntsel

+0

Кстати, примерно такую ​​же настройку можно найти в [PrimeFaces showcase] (http://www.primefaces.org/showcase/ui/treeSelectionSingle.jsf), которая работает как ожидалось. – skuntsel

ответ

0

Как указано Омер Фарук Алмалы

Положив кнопку в другой форме сделал работу вещь. Что касается объяснения, я позволю вам объяснить :)

<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> 
Смежные вопросы