简体   繁体   中英

JSF selectOneMenu - setting value in bean

I have selectOneMenu

        <h:selectOneMenu id = "current" value = "#{helloBean.currentLanguage}">
        <f:selectItems value="#{helloBean.categoryLanguages}"></f:selectItems>
        <f:ajax render = "ccData"></f:ajax>
    </h:selectOneMenu>

Here is HelloBean

@ManagedBean(name="helloBean")
@SessionScoped
public class HelloBean implements Serializable {
    private String currentLanguage;

    public void setcurrentLanguage(String currentLanguage){
        this.currentLanguage = currentLanguage;
        }
}

I have a problem with setting of currentLanguage. Eclipse shows an error message that #{helloBean.currentLanguage} expression is not settable. And when I run my project, I get an error

javax.servlet.ServletException: /hello.xhtml @19,74 value="#{helloBean.currentLanguage}": Property 'currentLanguage' not readable on type java.lang.String

As BalusC pointed out, Java is case sensitive.
So when you write: value=#{helloBean.currentLanguage} JSF expects that you define a setter and a getter of that attribute (currentLanguage):

public void setCurrentLanguage(String language){
  this.currentLanguage = language;//Or whatever
}

(Notice the upper C in current. And add a getter)
Since you are using Eclipse, try to automatically generate access methods of your classes. (Right click -> source -> generate getter and setters)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM