1

我无法使用 EL 在 JSF 中评估一对布尔表达式。

这是我的片段:

<a4j:commandButton id="addbtn" value="Add School(s)"
  action="#{somebean.someaction}"                       
  disabled="#{not studentRecords.isValid and not studentRecords.schoolSelected}">
</a4j:commandButton>

isValid 和 schoolSelected 将返回布尔结果,无论是真还是假。但是当我用'and'运算符连接这两个时它不起作用。

我试着把

!studentRecords.isValid and !studentRecords.schoolSelected

但这也行不通。

4

1 回答 1

4

只要正确编写了 setter 和 getter,EL 表达式就会自动确定正确的托管 bean 属性。

非布尔托管 Bean 属性

托管豆:

private Long studentRecordNumber;

public Long getStudentRecordNumber() {
  return this.studentRecordNumber;
}

public void setStudentRecordNumber(Long studentRecordNumber) {
  this.studentRecordNumber = studentRecordNumber;
}

JSF 标记

rednered="#{studentRecords.studentRecordNumber ne null}"

布尔托管 Bean 属性

托管豆:

private boolean valid;

public boolean isValid() {
  return this.valid;
}

public void setValid(boolean valid) {
  this.valid = valid;
}

JSF 标记

rendered="#{not studentRecords.valid and not studentRecords.schoolSelected}"

然而,EL 表达式也可用于直接评估布尔方法的返回结果,但必须使用方法括号。

rendered="#{studentRecords.canStudentEnrollToday()}"
于 2013-04-19T11:32:35.317 回答