JSF - Validación Primefaces para commandbuttons distintos

 
Vista:
Imágen de perfil de Alejandro

Validación Primefaces para commandbuttons distintos

Publicado por Alejandro (3 intervenciones) el 16/08/2016 14:21:16
Hola a tod@s,

mi caso es un poco particular. Tengo dos botones: guardar y cursar, y quiero que guardar envíe los datos a una base de datos temporal donde se recuperarán más adelante pero cursar lo envíe a otra base de datos distinta.

Teniendo en cuenta esto, quiero que el botón de guardar valide unos pocos campos y el botón de cursar valide prácticamente todos.

De este modo, estos son mis botones:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<p:commandButton id="alta_informe"
	value="Guardar Informe"
	update="growl"
	process="@this,form_informe,form_informe:form2,form_informe:form3,nombre_taller,cif_taller,telefono_taller,fax_taller,direccion_taller,poblacion_taller,provincia_taller,codigo_postal_taller,precio_hora_taller"
	validateClient="true"
	actionListener="#{informeTempBean.guardarInforme}"
	onsuccess="setTimeout(function(){window.opener.location.reload(); window.close();}, 2000);"
	style="background-color: #A9BCF5; text-align: center; margin: 0 auto; width:400px; margin-right: 10px;">
 
	<f:ajax onevent="handleDisableButton" />
</p:commandButton>
 
<p:commandButton id="cursar_informe"
	value="Cursar Informe"
	update="growl"
	process="@this,form_informe"
	validateClient="true"
	actionListener="#{informeTempBean.cursarInforme}"
	oncomplete="cursar_informe.hide();"
	onsuccess="setTimeout(function(){window.opener.location.reload(); window.close();}, 2000);"
	style="background-color: #A9BCF5; text-align: center; margin: 0 auto; width:400px;" >
 
	<f:ajax onevent="handleDisableButton" />
</p:commandButton>

Ocurre que si quito el validateClient del botón guardar, me cierra la ventana aunque tenga errores de validación o haya dejado campos en blanco y esto no me interesa, eso sí, debe cerrar la ventana si todo está correcto. Por tanto, debo dejarlo.

Pero en el caso del siguiente campo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<p:column>
	<h:outputLabel for="solicitante_temp" value="Solicitante:" />
	<p:inputText id="solicitante_temp"
		value="#{informeTempBean.informe_temp.solicitante}"
		validatorMessage="Solicitante erroneo"
		maxlength="30">
 
		<p:clientValidator event="keyup"/>
		<f:validateLength minimum="1" maximum="30"/>
		<f:validateRegex pattern="^[a-zA-Z0-9_:,.' '-]+$" />
	</p:inputText>
 
	<p:message for="solicitante_temp" display="icon"/>
 
</p:column>

Si meto un required="true", me valida en ambos botones, si pongo un required="not empty param.cursar_informe" como he visto en algún ejemplo, me pasa lo mismo al igual que con "param['form_informe:cursar_informe'] == null"... he probado con varios ejemplos encontrados en stackoverflow y no me funciona ninguno...

A alguien le ha ocurrido algo parecido y ha encontrado solución???

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder