Reputation: 119
I am using JSF dropdown list.Here is my code
<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" />
I am parsing validation error message throwing java exception.
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);
}}
In this cause error message successfully bind with 'msgSelectedMenu1'.But in some causes I want to set another error messages ("Error_Message_2") for some selected items with 'msgSelectedMenu2'.
Upvotes: 1
Views: 170
Reputation: 1732
You can try to use the actionListener
of f:ajax
, you check the value in actionListener
and then throw the ValidatorException
using rendered
on h:message
, deleting the validator
attribute
<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);
}
}
Upvotes: 1