eugenius
eugenius

Reputation: 15

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

Upvotes: 1

Views: 2637

Answers (1)

Laabidi Raissi
Laabidi Raissi

Reputation: 3333

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)

Upvotes: 2

Related Questions