在 JSF SelectOneMenu 的不同位置使用两条验证消息
Use two validation messages in different places for JSF SelectOneMenu
我正在使用 JSF 下拉菜单list.Here 是我的代码
<h:selectOneMenu id="selectedMenu" value="#{bean.selectedVal}" validator="#{bean.validate}" validatorMessage="#{bean.message}">
<f:selectItems value="#{bean.list}" .../>
<f:ajax event="change" render="frm:msgSelectedMenu1" />
</h:selectOneMenu>
<h:message for="selectedMenu" style="color:red" id="msgSelectedMenu1" />
<h:message for="selectedMenu" style="color:green" id="msgSelectedMenu2" />
我正在解析验证错误消息并抛出 java 异常。
public void validate(FacesContext context, UIComponent component, Object value)
throws ValidatorException {
...
if (condition 1) {
FacesMessage msg = new FacesMessage();
setMessage("Error_Message_1");
throw new ValidatorException(msg);
}}
在这个原因中,错误消息成功地与 'msgSelectedMenu1' 绑定。但在某些原因中,我想为某些具有 'msgSelectedMenu2' 的选定项目设置另一个错误消息 ("Error_Message_2")。
您可以尝试使用 f:ajax
的 actionListener
,检查 actionListener
中的值,然后使用 rendered
在 h:message
,删除validator
属性
<h:message for="selectedMenu" style="color:red" id="msgSelectedMenu1" rendered="${foo.message1}" />
<h:message for="selectedMenu" style="color:green" id="msgSelectedMenu2"
rendered="${foo.message2}" />
public void foo(){
if (condition 1) {
FacesMessage msg = new FacesMessage();
setMessage("Error_Message_1");
message1 = true;
message2 = false;
throw new ValidatorException(msg);
}
}
我正在使用 JSF 下拉菜单list.Here 是我的代码
<h:selectOneMenu id="selectedMenu" value="#{bean.selectedVal}" validator="#{bean.validate}" validatorMessage="#{bean.message}">
<f:selectItems value="#{bean.list}" .../>
<f:ajax event="change" render="frm:msgSelectedMenu1" />
</h:selectOneMenu>
<h:message for="selectedMenu" style="color:red" id="msgSelectedMenu1" />
<h:message for="selectedMenu" style="color:green" id="msgSelectedMenu2" />
我正在解析验证错误消息并抛出 java 异常。
public void validate(FacesContext context, UIComponent component, Object value)
throws ValidatorException {
...
if (condition 1) {
FacesMessage msg = new FacesMessage();
setMessage("Error_Message_1");
throw new ValidatorException(msg);
}}
在这个原因中,错误消息成功地与 'msgSelectedMenu1' 绑定。但在某些原因中,我想为某些具有 'msgSelectedMenu2' 的选定项目设置另一个错误消息 ("Error_Message_2")。
您可以尝试使用 f:ajax
的 actionListener
,检查 actionListener
中的值,然后使用 rendered
在 h:message
,删除validator
属性
<h:message for="selectedMenu" style="color:red" id="msgSelectedMenu1" rendered="${foo.message1}" />
<h:message for="selectedMenu" style="color:green" id="msgSelectedMenu2"
rendered="${foo.message2}" />
public void foo(){
if (condition 1) {
FacesMessage msg = new FacesMessage();
setMessage("Error_Message_1");
message1 = true;
message2 = false;
throw new ValidatorException(msg);
}
}