不会将方法设置为条件值参数,如
<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}'集合操作的非法语法
答案 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()
)。