Как использовать несколько форм на одной странице с JSF 2.0? - PullRequest
8 голосов
/ 09 июня 2011

Я пытаюсь использовать несколько форм с JSF 2.0 на одной странице. Я использую PrimeFaces 3.0M1 и пытаюсь создать приложение с вкладками и одной формой на вкладку.

У меня есть страница, подобная следующей:

<html xmlns="http://www.w3.org/1999/xhtml"

xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"                 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:fn="http://java.sun.com/jsp/jstl/functions" 
xmlns:p="http://primefaces.prime.com.tr/ui">

<div>
<p:tabView>
<p:tab title="Form1">
<h:form id="form1">
    <p:inputText id="txtInput" value="#{bean1.inputText}" />
    <p:commandButton title="Submit" value="Submit" actionListener="#{controller1.submitValues}">
</h:form>
</p:tab>
<p:tab title="Form2">
<h:form id="form2">
    <p:inputText id="txtInput2" value="#{bean2.inputText}" />
    <p:commandButton title="Submit" value="Submit" actionListener="#{controller2.submitValues}">
</h:form>
</p:tab>
</p:tabView>
</div>  
</html>

Если я нажму кнопку отправки на вкладке 1, все будет работать так, как ожидается. Но если я нажму на кнопку на второй вкладке, команда не будет выполнена в controller2.

В чем здесь проблема? Если я связываю команду выполнения button2 с button1, то команда в controller2 выполняется правильно, поэтому я могу исключить, что существует проблема с компонентами поддержки.

Как я могу решить эту проблему?

Ответы [ 3 ]

1 голос
/ 06 января 2012

Я думаю, вы можете указать атрибут * process * кнопки

попробуйте это.измените ваш <h:form> тег и замените его на <h:panelGrid> и присвойте им идентификаторы как form1 и form2 , а также измените ваши 2 кнопки следующим образом

<p:commandButton title="Submit" value="Submit" actionListener="#controller1.submitValues}" process="@this,form1">

<p:commandButton title="Submit" value="Submit" actionListener="#controller2.submitValues}" process="@this,form2">

это будет работать:) обнови меня своим результатом

1 голос
/ 09 июня 2011

Компоненты Primefaces wizard и tabview должны быть заключены в одну форму.

Нет причин, по которым у вас не может быть нескольких кнопок Submit в виде вкладок или мастера, подобных этому.Вероятно, вы запутались в этом, потому что беспокоились о других свойствах вашего управляемого компонента, которые не отображаются на вкладке, которая просматривается в данный момент.

0 голосов
/ 01 июля 2014

Вы можете создать список элементов и заполнить его значениями, которые вы хотите просмотреть в своем компоненте поддержки.Поместите тег <h:form> в тег <ui:repeat> следующим образом:

<ui:repeat var="item" value="#{backingBean.items}">
   <h:form>
    Put here the content of your form
   </h:form>
</ui:repeat>
<p:commandButton value="Submit" action="desired action"/>
...