3

我想绑定<p:selectBooleanCheckbox>到我的控制器方法。尝试绑定时出现以下错误。还有其他方法吗?

Property 'calculateBooleanValue' not found on type tr.controller.MyController

这是我的看法

<p:datatable var="dataRow" ....>
    <p:selectBooleanCheckbox value="#{myController.calculateBooleanValue(dataRow)}" />

我的控制器

public boolean calculateBooleanValue(Data data) {

 //There are some calculations with data and returns some boolean value acc. to this data


 }
4

2 回答 2

8

value属性必须表示一个值表达式。即它必须绑定到一个由真正的javabean getter 和setter 表示的属性。您不应使用带括号的方法表达式语法,这不是有效的值表达式语法。

因此,所以:

<p:selectBooleanCheckbox value="#{myController.booleanValue}" />

private boolean booleanValue;

@PostConstruct
public void init() {
    booleanValue = true;
}

public boolean isBooleanValue() {
    return booleanValue;
}

public void setBooleanValue(boolean booleanValue) {
    this.booleanValue = booleanValue;
}

如果您打算在每次单击复选框时执行一些“控制器方法”(您自己调用它),然后添加一个<p:ajax>带有侦听器的:

<p:selectBooleanCheckbox value="#{myController.booleanValue}">
    <p:ajax listener="#{myController.changeBooleanValue}" />
</p:selectBooleanCheckbox>

public void changeBooleanValue() {
    System.out.println("Current boolean value is: " + booleanValue);
    // ... 
    // Do your job here.
}
于 2013-09-23T14:34:49.390 回答
3

你不能。value接受一个值表达式,而不是一个方法表达式

想一想,如果是方法,属性怎么写?

于 2013-09-23T14:35:12.590 回答