2011-06-27 15 views
6

Chcę wypełnić selectonemenu ale zawsze mam ten błąd:selectonemenu z błędu java.lang.String nie mogą być oddane do javax.faces.model.SelectItem

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

jest to kod:

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> 

odkryłem, że powinienem napisać konwerter, ale nie wiem dlaczego? beacause Widziałem przykład pracy bez konwertera?

dziękuję

Odpowiedz

19

Spróbuj ten kod na swojej stronie internetowej

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

Nie używaj wartość atrybutu jego inteded dla różnych celów

2

h:selectOneMenu jako value akceptuje kolekcję SelectItem i zdałeś String a więc wyjątek.

+0

Tak, zauważyłem to, ale poszedłem za tym linkiem: http: //www.mkyong.com/jsf2/jsf-2- dropdown-box -example/ – rym

+0

To jest jsf2.0 i wydaje się, że próbujesz go na jsf.1.2 lub może być dokładnie porównany –

+0

@@ Jigar Joshi, Używam JSF2 – rym

3

Odpowiedzią jest „trochę” późno, ale chyba najlepszym rozwiązaniem jest:

<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> 

PS Chociaż jest to spóźniona odpowiedź, zamieściłem ją dla innych, którzy zmierzą się z tym samym problemem.

Powiązane problemy