请帮我处理下一件事。提交表单时出现错误"requestAccess:selectAccess: Validation Error: Value is not valid“。
<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";
}
}之前我有String类型的orgList和accessList,校验错误仍然存在。有人能帮帮我吗?提前感谢!
更新:我将currentAccess的类型改为SelectItem,并将属性immediate="true“添加到命令按钮,但未调用valueChangeListener方法。
发布于 2011-07-11 18:12:39
验证错误:值无效
当提交的值与任何可用选择项都不匹配时,您将收到此错误。换句话说,<f:selectItems>在表单提交期间返回的项与在表单显示期间返回的项并不完全相同。
I将currentAccess的类型更改为SelectItem
这是错误的。它的类型应与SelectItem的值属性相同。
并将属性immediate="true“添加到命令按钮,但未调用valueChangeListener方法。
在这种情况下,您不需要valueChangeListener。在listener方法中,您只是在重复JSF在更新模型值阶段已经在做的事情。把它扔掉。我也有这样的印象,你在这里真的不需要immediate="true"。也将其删除。
https://stackoverflow.com/questions/6647316
复制相似问题