您应该使用disabled
字段获取器,例如 in disabled="#{not recordsTransferSearch.disabled}"
,或者如果您的 EL 支持方法调用,即版本 2.2+,您应该()
在方法调用的末尾添加空括号 , ,例如 in disabled="#{not recordsTransferSearch.isDisabled()}"
。
请注意,就目前而言,与您在评论中的建议相反,disabled="#{bean.isDisabled}"
将触发Property 'isDisabled' not found错误。
根据您的评论,您并不完全了解disabled
属性在 JSF 中的工作原理。您似乎希望该按钮在某些 javascript 事件和/或通过某些操作/操作侦听器方法所做的某些更改时启用/禁用。不是这种情况。仅当属性的 EL 表达式disabled
相应地计算为真/假时,该按钮才被禁用/启用。您甚至可以对其进行测试:当您删除 HTML 的 disabled 属性时input
,有效地使其在客户端启用并调用该按钮,您会看到不会调用任何操作方法,而是会在服务器上重新评估其 disabled 属性并且,因为它会评估为false
,所以不会调用任何方法。
为了使其按预期工作,您需要通过 AJAX 调用重新呈现命令按钮(通过在另一个更改方法结果的属性中指定其 id以便它返回reRender
),或同步(强制执行所需的评估)所以禁用条件将被评估为。<a4j:commandButton>
isDisabled()
false
disabled
false
此外,最好通过一个基本示例来了解它是如何工作的。
风景:
<h:form>
<h:commandButton id="disabled" value="Disabled command button"
action="#{bean.disabledSubmit}"
disabled="#{not bean.disabled}">
</h:commandButton>
<h:commandButton id="simple" value="Enable a disabled button"
action="#{bean.simpleSubmit}">
<f:ajax render="disabled"/>
</h:commandButton>
</h:form>
豆子:
@ManagedBean
@ViewScoped
public class Bean implements Serializable{
private boolean searchResults = false;
public boolean isDisabled() {
return searchResults;
}
public String disabledSubmit() {
return null;
}
public String simpleSubmit() {
searchResults = true;
return null;
}
}