在 Wicket 中定义自己的反馈消息

发布于 2024-11-02 11:38:19 字数 110 浏览 4 评论 0原文

如何在 Wicket 中定义我自己的反馈消息? 例如:如果我提供的用户名不正确,我想收到一条错误消息,例如“用户名不正确,请尝试重新登录”。而不是使用默认的错误消息。

一个例子会是什么样的?

How do I define my own feedback messages in Wicket?
For example: if I give an incorrect username, I want to get an error message like "The user name in incorrect, try to login again." instead of using the default error message.

What would an example be like?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

暮色兮凉城 2024-11-09 11:38:19

您可以使用 error()warn() 以及 info() 显示自己的错误消息。如果您想显示依赖于验证器或所需标志的错误,您可以定义一个与包含字段映射的类同名的属性文件 ->信息。例如:

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

所有必填字段 表单

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

myform 中的字段 name 为必需的。

password.Required=You have to provide a password

任何名称为 password 的字段(如果需要)。

phonenumber.Required=A telephone number is obligatory.

任何名称为 phonenumber 的字段(如果需要)。

这显示了为特定组件设置反馈消息的多种方法。

您还可以将属性文件放在以下组件级别旁边(按重要性顺序,从最高到最高):

  • 页面类
  • 组件类
  • 您的应用程序类
  • Wickets 应用程序类

希望有帮助

You can display your own error messages using error() and warn() and info(). If you want to show errors dependent on validators or the required flag you can define a properties file with the same name as the class which contains a mapping of field -> message. For example:

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

All required fields

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

The field name in the form myform when it is required.

password.Required=You have to provide a password

Any field with the name password when it is required.

phonenumber.Required=A telephone number is obligatory.

Any field with the name phonenumber when it is required.

This shows a variety of ways of setting a feedback message for specific components.

You can also put the properties files next to the following component level (in order of importance, top highest):

  • Page Class
  • Component Class
  • Your Application Class
  • Wickets Application Class

Hope that helps

农村范ル 2024-11-09 11:38:19

@user1090145:我在 Validator 类中使用了重载组件的 error() 方法:

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

validate() 中调用它

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

并通过Properties your-form.field.text -id 必须在 YourPage.properties 源中定义


在 Wicket 中创建自定义验证器
表单验证消息

@user1090145: I've used overloaded Component's error() method in Validator's class:

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

and invoked it in validate() by

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

Properties your-form.field.text-id must be defined in YourPage.properties

Sources:
Create custom validator in Wicket and
Form validation messages

野稚 2024-11-09 11:38:19

您应该将反馈消息设置为会话

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

you should set Feed back message to Session

message = "message";
Session.get().getFeedbackMessages().success(null, message);
倾城°AllureLove 2024-11-09 11:38:19

您可以使用匿名 IValidationError 类和 messageSource.getMessage 方法从属性文件中获取自定义消息:

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

示例属性文件:

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

You can use an anonymous IValidationError class and the messageSource.getMessage method to get a custom message from your property file:

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

Sample property file:

mysettings.invalid_username=The user name "${invalidUsername}" is incorrect.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文