2011-06-09 31 views
7

Intento usar formularios múltiples con JSF 2.0 en una página. Uso PrimeFaces 3.0M1 e intento crear una aplicación con pestañas y un formulario por pestaña.¿Cómo usar múltiples formularios en una página con JSF 2.0?

Tengo una página como la siguiente:

<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> 

Si hago clic en el botón de envío en la ficha 1 y, al igual que todo funciona excpected. Pero, si hago clic en el botón en la segunda pestaña, el comando no se ejecutará en controller2.

¿Cuál es el problema aquí? Si enlace el comando de ejecución de button2 a button1, el comando en controller2 se ejecuta correctamente, por lo que puedo excluir que haya un problema en los beans de respaldo.

¿Cómo puedo solucionar esto?

Respuesta

1

El asistente Primefaces y los componentes de tabview deben estar encerrados en un solo formulario.

No hay ninguna razón por la que no pueda tener múltiples botones Enviar en una pestaña o un asistente como este. Tu confusión sobre esto es probable porque te preocupan las otras propiedades de tu bean administrado que no aparecen en la pestaña de visualización actual.

+0

Si tengo una forma única para todo el mago, ¿cómo puedo yo validaciones del lado del cliente en cada forma separada que se presenta? Por ejemplo, si pongo campos obligatorios, no me permitirá pasar a la siguiente pestaña porque todo está dentro de un mismo formulario – Erick

1

creo que se puede ir para especificar " proceso de" atributo de un botón

probar esto. cambiar su etiqueta <h:form> y reemplazarlo con <h:panelGrid> y dar sus ID de como Form1 y Form2 y cambiar y sus 2 botones como esto

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

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

esto va a funcionar. :) actualizarme con su resultado

+0

agregué dynamic = "true" en el diálogo y guardé el formulario dentro del Diálogo, resolvió el problema. – tom

0

Puede crear una lista de elementos y completarla con los valores que desea explorar en su bean de respaldo. Ponga la etiqueta <h:form> en <ui:repeat> etiqueta de la siguiente manera:

<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"/> 
Cuestiones relacionadas