2012-05-02 28 views
16

¿Cómo puedo personalizar el mensaje de validación que aparece cuando falla la validación?Cómo personalizar el mensaje de error de validación JSF

Aquí está el código que tengo:

<h:form> 
    <p><h:inputText 
      id="userNo" 
      title="Type a number from 0 to 10:"> 
     <f:validateLongRange 
      minimum="3" 
      maximum="6"/> 
     </h:inputText> 

     <h:commandButton id="submit" value="Submit" 
      action="response"/> 
    </p> 
    <h:message showSummary="true" showDetail="false" 
     id="errors1" 
     for="userNo"/> 
</h:form> 

Actualmente el mensaje tiene el siguiente aspecto:

j_idt10:userNo: Validation Error: Specified attribute is not between the expected values of 3 and 6. 

que no es particularmente fácil de usar.

Respuesta

37

La manera más simple sería establecer el atributo validatorMessage="my custom message" en la etiqueta <h:inputText>.

Para una forma más avanzada de leer este artículo Customize validation error message in JSF 2.0

And here a complete Reference to all available message that you can override in JSF 2.0.x

+0

Me sorprende que no haya forma de configurar el mensaje "sobre la marcha" en un atributo o algo así. Huh ... – Eleeist

+0

hay, editado mi respuesta ... – Daniel

+2

Eso definitivamente tiene más sentido. Pero, ¿qué sucede si tengo más de un validador conectado a la entrada y quiero personalizar los mensajes de cada uno de ellos? – Eleeist

9

Además de la respuesta de Daniel siempre se puede utilizar el atributo label para sus componentes de entrada para eliminar el ID de cliente (j_idt10:userNo:) a partir del error mensaje.

E.g. con

<h:inputText id="userNo" title="Type a number from 0 to 10:" 
      label="User number"> 
    <f:validateLongRange 
      minimum="3" 
      maximum="6"/> 
</h:inputText> 

producirá:

atributo

User number: Validation Error: Specified attribute is not between the expected values of 3 and 6.

La etiqueta puede ser una expresión el así cambiar esta parte del mensaje de error de forma dinámica.

3

Puede usar la propiedad validatorMessage del texto de entrada. Use la propiedad requiredMessage para el mensaje requerido, es diferente del mensaje del validador.

<h:input text required ="true" validatorMessage="Enter user friendly message"> 
    <f:validateLongRange 
     minimum="3" 
     maximum="6"/> 
</h:inputText> 
+2

cualquier descripción – tod

+0

Descripción añadida – omerhakanbilici

Cuestiones relacionadas