2015-03-17 17 views
5

Mam statyczną listę wybrać elementy w jednym z moich podkładowych fasoli:Dostęp właściwość statyczna w JSF

private static List<SelectItem> countries = new ArrayList<SelectItem>(); 

z następującymi pobierające i ustawiające:

public static List<SelectItem> getCountries()  { 
    return countries; 
} 

public static void setCountries(List<SelectItem> countries) { 
    LoadSelectItemsBean.countries = countries; 
} 

Mam problemy z dostępem statyczna lista przez moją stronę XHTML. Kod Próbowałem się następująco:

<ace:simpleSelectOneMenu id="countryField" 
    value="#{generalCarrierDataViewBean.carrierBean.countryId}"> 
    <f:selectItems value="#{loadSelectItemsBean.countries}" /> 
    <ace:ajax /> 
</ace:simpleSelectOneMenu> 

Linia problemem jest:

<f:selectItems value="#{loadSelectItemsBean.countries}" /> 

Wyjątkiem co skutkuje to:

javax.el.PropertyNotFoundException: /pages/GeneralCarrierData.xhtml @394,64 value="#{loadSelectItemsBean.states}": Property 'states' not found on type com.oag.reference.util.LoadSelectItemsBean 

Czy anbody doradzić, w jaki sposób prawidłowo odwoływać się właściwość statyczna z komponentu bean?

Dzięki

Odpowiedz

11

Właściwości dotyczą definicji nie static. Więc moduły pobierające i ustawiające mogą po prostu nie być statyczne, chociaż mogą z kolei odwoływać się do zmiennej statycznej. Ale świat zewnętrzny tego nie widzi.

Masz 3 opcje:

  1. Zdjąć static modyfikator z getter. Cały seter jest niepotrzebny, możesz go po prostu usunąć.

    public List<SelectItem> getCountries()  { 
        return countries; 
    } 
    
  2. Utwórz funkcję EL jeśli naprawdę nalegać w dostępie do statycznych „Właściwości” (funkcji). Szczegółowo można znaleźć w tej odpowiedzi: How to create a custom EL function to invoke a static method?

  3. Włącz cały List<SelectItem> rzeczy do z enum i skorzystać z OmniFaces <o:importConstants>. Szczegóły można znaleźć w tej odpowiedzi: How to create and use a generic bean for enums in f:selectItems?

+0

Dziękuję, prawdopodobnie przejdę na trasę z opcją 1 i zmienię moją fasolę na wcześniej skonfigurowaną. – LiamWilson94