首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >h:selectoneradio验证错误

h:selectoneradio验证错误
EN

Stack Overflow用户
提问于 2011-07-11 16:03:05
回答 1查看 2.3K关注 0票数 1

请帮我处理下一件事。提交表单时出现错误"requestAccess:selectAccess: Validation Error: Value is not valid“。

代码语言:javascript
复制
<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>
代码语言:javascript
复制
@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方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-11 18:12:39

验证错误:值无效

当提交的值与任何可用选择项都不匹配时,您将收到此错误。换句话说,<f:selectItems>在表单提交期间返回的项与在表单显示期间返回的项并不完全相同。

I将currentAccess的类型更改为SelectItem

这是错误的。它的类型应与SelectItem属性相同。

并将属性immediate="true“添加到命令按钮,但未调用valueChangeListener方法。

在这种情况下,您不需要valueChangeListener。在listener方法中,您只是在重复JSF在更新模型值阶段已经在做的事情。把它扔掉。我也有这样的印象,你在这里真的不需要immediate="true"。也将其删除。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6647316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档