繁体   English   中英

不会呈现 JSF FacesMessage

[英]JSF FacesMessage will not be renderd

我已经阅读了很多如何添加 FacesMessage 的指南,但没有任何效果,我不明白为什么?

我总是收到以下警告,但我现在不知道如何解决?

[Warnung ] There are some unhandled FacesMessages, this means not every FacesMessage had a chance to be rendered.
These unhandled FacesMessages are: 
- Login failed

我的 JSF 视图:

    <!-- Login Form -->
        <h:form id="loginForm" role="form" style="width: 400px; margin:0 auto;">
            <div class="required-field-block">
                <h:outputLabel for="email" value="Email-Adresse"></h:outputLabel>
                <h:inputText id="email" label="Email" value="#{loginBean.email}" class="form-control" required="true" requiredMessage="Keine Mailadresse angeben"></h:inputText>
                <h:message for="email" class="text text-danger"></h:message>
            </div>
            <div class="required-field-block">
                <h:outputLabel for="password" value="Passwort"></h:outputLabel>
                <h:inputText id="password" label="Passwort" value="#{loginBean.password}" class="form-control" required="true" requiredMessage="Kein Passwort angegeben"></h:inputText>
                <h:message for="password" class="text text-danger"></h:message>
            </div>
            <h:commandButton  id="sendLogin" update="loginForm" value="Login" type="submit" actionListener="#{loginBean.login}" class="btn btn-primary"></h:commandButton>
            <h:message globalOnly="true"></h:message>
        </h:form>

还有我来自 bean 的代码:

    public String login() {
    UserManagement man = new UserManagement();
    try {
        user = man.getUserByEmail(this.email);
    } catch (SQLException | IndexOutOfBoundsException e) {
        String msg = "Login failed";
        addErrorMessage(msg);
        return "loginFailed";
    }

    if(this.user!=null&&this.user.getPassword().equals(password)) {
        this.loggedIn = true;
        return "loginSucceed";
    }
    else {
        String msg = "Unvalid Password";
        addErrorMessage(msg);
        return "loginFailed";
    }
}

private void addErrorMessage(String msg) {
    FacesContext context = FacesContext.getCurrentInstance();
    FacesMessage fm = new FacesMessage(msg);
    context.addMessage(null, fm);
}

我究竟做错了什么? 为什么这条消息没有呈现? 我有点绝望,因为我在全局范围内尝试了所有 ID,但没有任何效果,我很困惑为什么它不起作用。 也许这只是我一直没有看到的愚蠢错误:(

h:message组件仅呈现来自您必须使用for属性引用的组件的单个消息。

如果要呈现所有消息,只需使用h:messages代替:

<h:messages/>

这应该适用于您的用例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM