2014-02-04 5 views
2

Я выполняю некоторые основные учебники по JSF, и имеет следующий код в названиях боба userDataJSF ошибка: свойство не найдено

@ManagedBean(name="userData", eager=true) 
@SessionScoped 
public class userData implements Serializable 
{ 
    private static final long serialVersionUID = 1L; 


    private String name; 
    private String password; 
    private String welcomeMessage; 

    private String selectedCountry = "United Kingdom"; 
    private static Map<String, String> countries; 

    static 
    { 
     countries = new LinkedHashMap<String, String>(); 
     countries.put("en", "United Kingdom"); 
     countries.put("fr","French"); 
     countries.put("de","Germany"); 
    } 

    public void localeChanged(ValueChangeEvent e) 
    { 
     selectedCountry = e.getNewValue().toString(); 
    } 

    public void setSelectedCountry(String selectedCountry) 
    { 
     this.selectedCountry = selectedCountry; 
    } 

    public String getSelectedCountry() 
    { 
     return selectedCountry; 
    } 

    public Map<String, String> getCountries() 
    { 
     return countries; 
    } 

    public void userData() 
    { 
     this.name = "Mario"; 
    } 

    public String getName() 
    { 
     return name; 
    } 

    public void setName(String name) 
    { 
     this.name = name; 
    } 

    public void setPassword(String password) 
    { 
     this.password = password; 
    } 

    public String getPassword() 
    { 
     return this.password; 
    } 

    public String login() 
    { 
     return "result"; 
    } 

    public String getWelcomeMessage() 
    { 
     return "hello" + name; 
    } 
} 

на другой стороне в .xhtml страницы у меня есть часть HTML код следующим образом:

<h:form> 
     <h1> 
      #{userData.selectedCountry} 
     </h1> 
     <h:selectOneMenu value="#{userData.selectedCountry}" 
         onchange="submit()" 
         valueChangeListener="#{userData.localeChanged}"> 
      <f:selectItems value="#{userData.countries}"/> 
     </h:selectOneMenu> 
     <br/> 
     <h1> 
      Country Name : 
      <h:outputText id="country" value="#{userData.selectedCountry}"/> 
     </h1> 
    </h:form> 

еще, когда я исполняю страницу на сервере производится следующая ошибка: useBeans.xhtml: свойство «SELECTEDCOUNTRY» не найден по типу USERDATA. Может кто-то, пожалуйста, подчеркнуть, что я делаю неправильно?

+2

Похоже, что ваш класс не скомпилирован, как вы ожидали. Помимо этого, я не знаю, какой учебник вы используете, но 'eager = true' работает только с управляемыми bean-файлами' @ ApplicationScoped', иначе этот атрибут будет 'false'. –

ответ

1

В моем случае причина потому, что я скопировал класс, включая serialVersionUID поле:

private static final long serialVersionUID = 5443351151396868724L; 

, так что я имел два разных классов и объектов, с тем же serialVersionUID и это был ключ к разгадке этой проблемы.

Смежные вопросы