2011-04-21 27 views
13

¿Cómo defino mis propios mensajes de retroalimentación en Wicket? Por ejemplo: si proporciono un nombre de usuario incorrecto, quiero obtener un mensaje de error como "El nombre de usuario es incorrecto, intente iniciar sesión nuevamente". en lugar de usar el mensaje de error predeterminado.Defina sus propios mensajes de retroalimentación en Wicket

¿Cómo sería un ejemplo?

Respuesta

26

Puede mostrar sus propios mensajes de error usando error() y warn() y info(). Si desea mostrar los errores dependientes de los validadores o la bandera requerida, puede definir un archivo de propiedades con el mismo nombre que la clase que contiene una asignación de campo -> mensaje. Por ejemplo:

Index.java

Form form = new Form("myform"); 
form.add(new TextField("name").setRequired(true)); 
form.add(new PasswordTextField("password").setRequired(true)); 
form.add(new TextField("phonenumber").setRequired(true)); 

Index.properties

Required=Provide a ${label} or else... 

Todos los campos requeridos

myform.name.Required=You have to provide a name 

El campo name en forma myform cuando sea necesario.

password.Required=You have to provide a password 

Cualquier campo con el nombre password cuando es necesario.

phonenumber.Required=A telephone number is obligatory. 

Cualquier campo con el nombre phonenumber cuando se requiera.

Esto muestra una variedad de formas de configurar un mensaje de retroalimentación para componentes específicos.

También puede poner los archivos de propiedades junto a la siguiente nivel de componentes (en orden de importancia, la parte superior más alta):

  • Página Clase
  • clase de componentes
  • la clase de aplicación
  • Wicketes Application Class

Espero que ayude

+1

¿Cómo funciona con los mensajes de los validadores? Usaste solo el método setRequired. – user1090145

2

@ user1090145: He usado sobrecargado error() método de componentes en la clase del validador:

private void error(IValidatable<String> validatable, String errorKey) { 
    ValidationError error = new ValidationError(); 
    error.addMessageKey(errorKey); 
    validatable.error(error); 
} 

e invocado en validate() por

error(validatable, "your-form.field.text-id"); 

Propiedades tu- form.field.text-id se debe definir en YourPage.Propiedades

Fuentes: Create custom validator in Wicket y Form validation messages

1

debe establecer Retroactúe mensaje a Sesión

message = "message"; 
Session.get().getFeedbackMessages().success(null, message); 
0

Puede utilizar una clase IValidationError anónimo y el método messageSource.getMessage para obtener un mensaje personalizado de su archivo de propiedad:

error(new IValidationError() { 
    @Override 
    public Serializable getErrorMessage(IErrorMessageSource messageSource) { 
     //create a list of the arguments that you will use in your message string 
     Map<String, Object> vars = new HashMap<String, Object>(); 
     vars.put("invalidUsername", getInvalidUsernameInput()); 

     //get the message string from the property file 
     return messageSource.getMessage("mysettings.invalid_username", vars); 
    } 
}); 

Archivo de propiedades de muestra:

mysettings.invalid_username=The user name "${invalidUsername}" is incorrect. 
Cuestiones relacionadas