Please, help me to tackle with next matter. I have error "requestAccess:selectAccess: Validation Error: Value is not valid" when submit form.
<h:form id="requestAccess">
<h:selectOneMenu id="orgList" value="#{requestAccessBean.currentOrg}">
<f:selectItem itemLabel="-- select --" itemValue="null" />
<f:selectItems value="#{requestAccessBean.orgList}" />
<f:ajax event="change" execute="@this" render="selectAccess"/>
</h:selectOneMenu>
<h:selectOneRadio id="selectAccess" valueChangeListener="# {requestAccessBean.accessChanged}" value="#{requestAccessBean.currentAccess}" layout="pageDirection">
<f:selectItems value="#{requestAccessBean.accessList}" />
</h:selectOneRadio>
</h:form>
@ManagedBean(name = "requestAccessBean")
public class RequestAccessSection {
private List<SelectItem> accessList;
private List<SelectItem> orgList;
private String currentOrg,currentAccess;
public void accessChanged(ValueChangeEvent event) {
this.currentAccess = event.getNewValue();
}
public List<SelectItem> getAccessList() {
if (this.accessList == null) {
this.accessList = returnAccessList();
}
return this.accessList;
}
public List<SelectItem> getOrgList() {
if (this.orgList == null) {
this.orgList = returnOrgList();
}
return this.orgList;
}
public List<SelectItem> returnOrgList() {
List<OrgUnit> orgList = new ArrayList<OrgUnit>();
List<SelectItem> selectItemsOrgList = new ArrayList<SelectItem>();
orgList = getBusinessDelegate().getOfficeBranches();
for(OrgUnit org : orgList){
selectItemsOrgList.add(new SelectItem(org.getGlobalid(), org.getOu()));
}
return selectItemsOrgList;
}
public List<SelectItem> returnAccessList() {
List<String> accessList = new ArrayList<String>();
List<SelectItem> selectItemsAccessList = new ArrayList<SelectItem>();
String userId = (String) getSessionMap().get(USER_ID_KEY);
accessList = getBusinessDelegate().getAccessList(userId, this.currentOrg);
if(accessList!=null){
for(String access : accessList){
selectItemsAccessList.add(new SelectItem(access, access));
}
}
return selectItemsAccessList;
}
public String goToOrderAccessPage(){
return "orderaccess.jsf";
}
}
Previously, i have orgList and accessList of String type, and validation error still exists. Could someone help me? Thanks in advance!
UPDATE: I change type of currentAccess to SelectItem and add attribute immediate="true" to command button but valueChangeListener method is not called.