1

我有 selectOneMenu

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

这是HelloBean

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

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

我在设置 currentLanguage 时遇到问题。Eclipse 显示一条错误消息,即#{helloBean.currentLanguage}表达式不可设置。当我运行我的项目时,我得到一个错误

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

1 回答 1

2

正如 BalusC 所指出的,Java 区分大小写。
因此,当您编写:value=#{helloBean.currentLanguage}JSF 期望您定义该属性的 setter 和 getter(currentLanguage):

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

(注意当前上面的C。并添加一个getter)
由于您使用的是Eclipse,请尝试自动生成您的类的访问方法。(右键 -> 源 -> 生成 getter 和 setter)

于 2013-05-17T20:18:25.137 回答