不会使用条件值参数设置方法

时间:2014-01-28 05:14:56

标签: jsf

不会将方法设置为条件值参数,如

<h:inputText value="#{empty foo.firstproperty ? foo.secondproperty : foo.firstproperty}" />

我收到了这个错误:

  

设置操作的非法语法

有办法吗?

修改

public class foo {
    private String firstproperty;
    private String secondproperty;

    public String getFirstproperty() {
        return firstproperty;
    }

    public void setFirstproperty(String firstproperty) {
        this.firstproperty = firstproperty;
    }

    public String getSecondproperty() {
        return secondproperty;
    }

    public void setSecondproperty(String secondproperty) {
        this.secondproperty = secondproperty;
    }
}
  

/baa.jsp(39,0)'#{empty foo.firstproperty? foo.secondproperty:foo.firstproperty}'集合操作的非法语法

1 个答案:

答案 0 :(得分:3)

使用普通的setter方法设置操作需要属性,即在支持bean中以#{bean.property}public void setProperty(SomeClass property)的形式。设置属性的EL操作将无法正常工作(尽管getter确实可以使用EL表达式,例如在<h:outputText>中)。

也就是说,解决方案非常简单:在视图中有两个UIInput组件,并根据bean属性的值有条件地呈现其中一个组件:

<h:inputText value="#{fooBean.firstProperty}" rendered="#{not empty fooBean.firstProperty}"/>
<h:inputText value="#{fooBean.secondProperty}" rendered="#{empty fooBean.firstProperty}"/>

在此类设置中,只会渲染其中一个输入组件,并将绑定到您想要的属性。


此外,请务必遵守Java命名约定,在您的情况下转换为:

  • 使用大写字母(不是public class foo public class Foo )和
  • 开始一个班级名称
  • 您班级中的骆驼案例字段和方法(不是private String firstproperty,而是 private String firstProperty ,而不是public String getFirstproperty(),但 public String getFirstProperty() )。
相关问题