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

rym*_*rym 6 java jsf

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

java.lang.String cannot be cast to javax.faces.model.SelectItem
Run Code Online (Sandbox Code Playgroud)

这是代码:

public class ToolsJIRA implements Serializable{

private String myChoicePeriod;

 //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

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> 
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Mad*_*ddy 21

在您的网页中试用此代码

<h:selectOneMenu value="#{checkBoxBean.myChoicePeriod}">
                <f:selectItem itemValue="Month" />
                <f:selectItem itemValue="Week" />
                <f:selectItem itemValue="Year" />
             </h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

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


Adi*_*tzu 5

答案“有点”晚了,但最好的解决方案可能是:

<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> 
Run Code Online (Sandbox Code Playgroud)

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