【问题标题】:Error when I try to recuperate items from selectManyListbox [duplicate]当我尝试从 selectManyListbox 中恢复项目时出错 [重复]
【发布时间】:2011-07-15 14:45:01
【问题描述】:

我正在使用 JSF2.0/Primefaces,我使用了包含元素(项目名称)的 selectManyListbox,我应该恢复这些元素并根据选择生成另一个包含其他元素的 selectManyListbox。

首先我尝试填充我的第一个 selectManyListbox 并恢复选择的项目,但发生错误:

我的 JSF:

    <h:selectManyListbox size="3"  value="#{TestAjax.selectedProjects} ">
      <f:selectItems value="#{TestAjax.getMyListProject()}" />
     </h:selectManyListbox>

我的豆子:

private List<String> selectedProjects; // + getter + setter
private List<SelectItem> MyListproject;

  public List<SelectItem> getMyListProject()  {
       FindProject fproj =new FindProject();
            if (MyListproject == null) {
            MyListproject = new ArrayList<SelectItem>();
            for (String val : fproj.FindListprojects()) { 
         MyListproject.add(new SelectItem(val));
       }
    }
 return MyListproject;
}

错误是:

javax.faces.FacesException: Target model Type is no a Collection or Array
at     com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectManyValuesForModel(MenuRenderer.java:392)
at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectManyValue(MenuRenderer.java:129)
at com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(MenuRenderer.java:315)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030)
at javax.faces.component.UIInput.validate(UIInput.java:960)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1233)
at javax.faces.component.UIInput.processValidators(UIInput.java:698)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIForm.processValidators(UIForm.java:253)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1172)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

更新: 问题解决了

这是一个磨损的错误:size="3" 应该在 value 属性之后!

【问题讨论】:

  • 很好,您发现了问题。请关闭问题。
  • “康复”是什么意思?两天前我已经看到了这个问题,但没有回答,因为我完全不知道你在说什么。尽量少用外来词,这样非英语母语的人也能理解问题。

标签: java jsf-2


【解决方案1】:

PDATE:问题已解决

这是一个磨损的错误:size="3" 应该在 value 属性之后!

【讨论】:

  • 无法使用 Mojarra 2.1.1 重现此问题。你使用的是什么 JSF impl/version?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 2016-01-05
  • 1970-01-01
  • 2019-10-29
  • 2023-03-22
相关资源
最近更新 更多