具有错误java.lang.String的selectonemenu无法强制转换为javax.faces.model.SelectItem

时间:2011-06-27 09:27:14

标签: java jsf

我想填写一个selectonemenu但总是有这个错误:

java.lang.String cannot be cast to javax.faces.model.SelectItem

这是代码:

public class ToolsJIRA implements Serializable{

private String myChoicePeriod;

 //getters and setters
}

JSF:

  <h:selectOneMenu value="#{ToolsJIRA.myChoicePeriod}">
                   <f:selectItem itemValue="Month" value="Month"/>
                   <f:selectItem itemValue="Week" value="Week"/>
                   <f:selectItem itemValue="Year" value="Year"/>
  </h:selectOneMenu> 

我发现我应该写一个转换器,但我不知道为什么?因为我看过一些没有转换器的例子吗?

谢谢

3 个答案:

答案 0 :(得分:21)

在您的网页中试用此代码

<h:selectOneMenu value="#{checkBoxBean.myChoicePeriod}">
                <f:selectItem itemValue="Month" />
                <f:selectItem itemValue="Week" />
                <f:selectItem itemValue="Year" />
             </h:selectOneMenu>

不要使用其出于不同目的的值属性

答案 1 :(得分:4)

答案是&#34;一点点&#34;迟到但可能最好的解决方案是:

<h:selectOneMenu value="#{ToolsJIRA.myChoicePeriod}">
                   <f:selectItem itemLabel="Month" itemValue="Month"/>
                   <f:selectItem itemLabel="Week" itemValue="Week"/>
                   <f:selectItem itemLabel="Year" itemValue="Year"/>
  </h:selectOneMenu> 

P.S。虽然是一个迟到的答案,但我会将其发布给其他将面临同样问题的人

答案 2 :(得分:2)

h:selectOneMenu作为value接受SelectItem的集合,您通过了String,因此异常。