我有简单的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。
答案 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;
}