【问题标题】:Overriding default validation messages覆盖默认验证消息
【发布时间】:2020-01-17 02:38:26
【问题描述】:

在登录时验证用户输入时,我正在尝试覆盖默认的 primefaces 消息。当用户名和密码不是管理员/管理员时,我设法获得了自己的消息,现在我想获得自己的消息当没有用户名、密码或两者兼有时。

我已经尝试了下面的代码(否则为 if 行),但它不起作用。三种情况都试过了,还是不行。

     public class UserLogin{

    private String username;

    private String password;

    private String vrstaPrava;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getVrstaPrava() {
        return vrstaPrava;
    }

    public void setVrstaPrava(String vrstaPrava) {
        this.vrstaPrava = vrstaPrava;
    }

    public void login() {
        FacesMessage message = null;
        boolean loggedIn = false;



        if(username != null && username.equals("admin") && password != null && password.equals("admin")) {
            loggedIn = true;
            message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Dobro došli", username);

        } else if (username == null) {
            loggedIn = false;
            message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Greška prilikom prijave", "Niste unijeli korisničko ime/lozinku");
        } else {
            loggedIn = false;
            message = new FacesMessage(FacesMessage.SEVERITY_WARN, "Greška prilikom prijave", "Pogrešno korisničko ime/lozinka");
        }

        FacesContext.getCurrentInstance().addMessage(null, message);
        PrimeFaces.current().ajax().addCallbackParam("loggedIn", loggedIn);
    }  }

【问题讨论】:

  • 用户名.equals("");或用户名..length()==0;能否请您把这些信息翻译成英文?
  • 你这个bean的作用域是什么?
  • @Jim_Ktr 都试过了,没用。如果管理员/管理员“欢迎”+ 用户名,则消息,否则“登录时出错,用户名/密码错误”。 Selaron 不,它没有用。 Jasper de Vries 没有放 bean 的范围,只放了“@ManagedBean”
  • 你试过设置断点和调试吗?
  • 您能否详细说明“它不起作用”的含义。尝试将范围至少设置为ViewScoped

标签: primefaces


【解决方案1】:

不确定您使用什么输入,但您始终可以设置 required = true 并为每个输入输入您自己的消息 requiredMessage="yourmessage"。

例子:

<p:inputText id="username" required="true" requiredMessage="Please enter a username" />

【讨论】:

【解决方案2】:

正如柔杰所说,在这种情况下,您可以使用 required + requiredMessage。

您还可以在相应的 messages.properties 文件中自定义默认消息,以避免每个字段重复 requiredMessage。

javax.faces.component.UIInput.REQUIRED={0}: Your custom text here.

【讨论】:

猜你喜欢
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
相关资源
最近更新 更多