提交后显示包含错误消息的div

时间:2015-04-17 10:01:25

标签: jsf message

我有简单的JSF登录表单,如果用户成功登录,则会重定向。如果用户无法登录,我希望不显示文本,而是带有消息的div。我想仅在用户输入错误数据且无法登录时才显示该段HTML。

我该如何管理?你能用JSF给我一些关于表单和支持bean的例子吗?

我找到了很多例子但只显示文字(h:消息)。这些示例包括一些html包装器标签,如div,其中包含该文本。我想在提交失败时显示div(如果用户名/密码错误,则会失败)。

让我在没有JSF数据的简单html中展示它的外观:

        <div class="error">Username/password not correct!</div>

        <label for="user_name">Username:</label>
        <input name="user_name" type="text" id="user_name" maxlength="20"/>

        <label for="password">Password:</label>
        <input name="password" type="password" id="password" maxlength="20"/>

        <input name="Submit" type="submit" id="log_btn" value="Login" />

所以,我希望我足够清楚 - 我希望在启动时显示此表单时不要使用该div容器,但是当用户尝试提交并输入错误数据时,希望拥有该div容器。我不希望每个输入下面都有错误报告,只显示带有我自定义单个错误消息的div。

1 个答案:

答案 0 :(得分:0)

  

我试过:不正确!但这不是好事/半途而废   很好,因为我的Login类是SessionScoped,所以一次   auth.success_status获得“错误”状态无法回复(例如    - 你尝试登录,你得到正确的错误div。但是如果用户然后再次将同一页面写入url,则会设置错误,尽管它不应该是..如何   避免那个Balus C?

然后让你的bean成为 viewScoped

但正确答案(如BalusC所说)正在使用FacesMessages。

这是一个如何将FacesMessages与CSS样式类一起使用的示例:

JSF-XHTML:我在 TABLE布局

中显示消息
<h:messages layout="table" showDetail="true" styleClass="FACES-MESSAGES" infoClass="MESSAGES-INFO" errorClass="MESSAGES-ERROR" warnClass="MESSAGES-WARN"/>
你的bean中的

// FacesMessage.SEVERITY_ERROR, FacesMessage.SEVERITY_WARN or FacesMessage.SEVERITY_INFO
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "ERROR: ", "Invalid Data....");
FacesContext.getCurrentInstance().addMessage(null, msg);
对于 TABLE布局

CSS

.FACES-MESSAGES {
    width: 100%;
    border-collapse: seperated;
    border: 0px solid #DDDDDD;
    margin: 2px 0px 2px 0px;

}

.FACES-MESSAGES td{
    height: 18px;
    font-weight: normal;    
    font-size: 12px;    
    padding: 2px 2px 2px 22px;
}
.FACES-MESSAGES .MESSAGES-INFO{
    color: #0000DD;
    background: transparent url('images/message_info.png') 2px 0px no-repeat;

}

.FACES-MESSAGES .MESSAGES-ERROR{
    color: #BB0000;
    background: transparent url('images/message_error.png') 2px 0px no-repeat;

}
.FACES-MESSAGES .MESSAGES-WARN{
    color: #000;
    background: transparent url('images/message_warn.png') 2px 0px no-repeat;
}