Question Définir ses propres messages de retour dans Wicket


Comment définir mes propres messages de retour dans Wicket? Par exemple: si je donne un nom d'utilisateur incorrect, je veux obtenir un message d'erreur comme "Le nom d'utilisateur est incorrect, essayez de vous connecter à nouveau." au lieu d'utiliser le message d'erreur par défaut.

Comment serait un exemple?


13
2018-04-21 04:13


origine


Réponses:


Vous pouvez afficher vos propres messages d’erreur en utilisant error() et warn() et info(). Si vous souhaitez afficher des erreurs dépendant des validateurs ou de l'indicateur requis, vous pouvez définir un fichier de propriétés portant le même nom que la classe contenant un mappage de champ -> message. Par exemple:

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

Tous les champs obligatoires

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

Le champ name sous la forme myform quand c'est requis.

password.Required=You have to provide a password

Tout champ avec le nom password quand c'est requis.

phonenumber.Required=A telephone number is obligatory.

Tout champ avec le nom phonenumber quand c'est requis.

Cela montre une variété de façons de définir un message de retour pour des composants spécifiques.

Vous pouvez également placer les fichiers de propriétés à côté du niveau de composant suivant (par ordre d'importance, le plus élevé):

  • Classe de page
  • Classe de composants
  • Votre classe d'application
  • Classe d'application des guichets

J'espère que cela pourra aider


26
2018-04-21 08:11



@ user1090145: J'ai utilisé des composants surchargés Erreur() méthode dans la classe du validateur:

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

et l'a invoqué dans valider() par

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

Propriétés your-form.field.text-id doit être défini dans YourPage.properties 

Sources: Créer un validateur personnalisé dans Wicket et Messages de validation de formulaire


2
2017-10-10 10:24



vous devez définir Feed back message to Session

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

1
2017-07-04 08:26



Vous pouvez utiliser une classe IValidationError anonyme et la méthode messageSource.getMessage pour obtenir un message personnalisé à partir de votre fichier de propriétés:

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);
    }
});

Exemple de fichier de propriétés:

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

0
2017-09-30 20:50