【问题标题】:Define own feedback messages in Wicket在 Wicket 中定义自己的反馈消息
【发布时间】:2011-04-21 04:13:22
【问题描述】:

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

一个例子会是什么样的?

【问题讨论】:

    标签: wicket


    【解决方案1】:

    您可以使用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
    

    必填字段name,格式为myform

    password.Required=You have to provide a password
    

    需要时名称为password 的任何字段。

    phonenumber.Required=A telephone number is obligatory.
    

    需要时名称为phonenumber 的任何字段。

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

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

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

    希望有帮助

    【讨论】:

    • 如何处理验证者的消息?您只使用了 setRequired 方法。
    【解决方案2】:

    @user1090145:我在 Validator 的类中使用了重载 Component 的 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");
    

    属性your-form.field.text-id必须在YourPage.properties中定义

    来源: Create custom validator in WicketForm validation messages

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        您可以使用匿名 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.
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-12
          相关资源
          最近更新 更多