¿Cómo reenviar parte de la página con formulario en JSF 2.0?
Actualmente estamos tratando de pasar a JSF 2.0 desde JSF 1.2 y uno de los problemas que enfrentamos es que es imposible volver a enviar parte de la página que contiene el formulario. Como esteouterDiv
o se forma ellos mismos):
<code><h:panelGroup id="outerDiv"> <h:form id="form1">...</h:form> <h:form id="form2">...</h:form> </h:panelGroup> </code>
Quiero decir que si actualizoouterDiv
todo se actualiza pero la forma (o formas) en sí misma se rompe y se comporta de manera extraña, al menos las llamadas ajax no funcionan cuando se activan por primera vez o en lugar de llamar al método de algún bean crean una nueva instancia de ese bean y no hacen nada (ya sea con destruyendo la anterior con cada llamada o simplemente creando una nueva en la primera llamada y luego no hacer nada). El problema se puede resolver volviendo a enviar solo los componentes dentro del formulario, como este (actualizarinnerDiv1
yinnerDiv2
):
<code><h:panelGroup id="outerDiv"> <h:form id="form1"> <h:panelGroup id="innerDiv1">...</h:panelGroup> </h:form> <h:form id="form2"> <h:panelGroup id="innerDiv2">...</h:panelGroup> </h:form> </h:panelGroup> </code>
pero tenemos muchos lugares donde incluimos alguna página conui:include
y no es muy conveniente mirar dentro de esa página y actualizar ciertos componentes allí. Además, tendremos que modificar todas estas páginas, ya que muchas de ellas no tienen un divisor de envoltorio común dentro de los formularios y actualizar cada componente por separado será muy engorroso y propenso a errores.
Entonces, ¿es posible que JSF 2.0 actualice correctamente parte de la página con el primer enfoque como lo fue en JSF 1.2?
EDITAR: parece que el problema con la representación de formularios es un problema de richfaces 4.2 mientras lo usoa4j:ajax
(sucesor dea4j:support
que se utilizó con richfaces 3.3.3) y botones personalizados basados enrich:commandButton
. Cuando los sustituí con jsf's nativosf:ajax
Las formas parecen ser actualizadas correctamente. Pero el problema con div exterior sigue siendo real