Swi*_*tch 2 jsf richfaces ajax4jsf jsf-2
我试图通过定义一个操作方法并将其绑定到组件的“disabled”属性来禁用 jsf 组件。
我的 JSF 组件片段
<h:form id="bulk_sch_form1">
<a4j:commandButton id="alls" value="a. Search records form this company"
action="#{recordsTransferSearch.actionSearch}"
reRender="srtDlGrd, dlod_msg_grd, pending_student_table"
disabled="#{not recordsTransferSearch.isDisabled}">
</a4j:commandButton>
</h:form>
Run Code Online (Sandbox Code Playgroud)
支撑豆作用方法
public boolean isDisabled() {
if (searchResults != null) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
searchResults 仅在返回成功的搜索结果后进行评估。但正如标题中所述,它isDisabled()根本没有调用操作方法,因此什么也没有发生。
仅当我刷新页面时才会调用操作方法。
谢谢。
您应该使用disabled字段 getter,如 in disabled="#{not recordsTransferSearch.disabled}",或者如果您的 EL 支持方法调用,即版本为 2.2+,则应()在方法调用末尾添加空括号 ,如 in disabled="#{not recordsTransferSearch.isDisabled()}"。
请注意,就目前情况而言,与您在评论中的建议相反,disabled="#{bean.isDisabled}"将触发属性“isDisabled”未找到错误。
根据您的评论,您不完全理解disabled属性在 JSF 中的工作原理。看来您希望按钮在某些 javascript 事件和/或通过某些操作/动作侦听器方法所做的一些更改中启用/禁用。不是这种情况。仅当属性的 EL 表达式相应地计算为 true/false 时,该按钮才被禁用/启用disabled。您甚至可以测试它:当您删除 HTML 的禁用属性input,有效地在客户端启用它并调用该按钮时,您将看到不会调用任何操作方法,而是将在服务器上重新评估其禁用属性并且,由于它的计算结果为false,因此不会调用任何方法。
为了使其按预期工作,您需要通过 AJAX 调用重新呈现命令按钮(通过在另一个更改方法结果的属性中指定其 id ,以便它返回reRender),或同步(强制执行所需的评估),以便禁用条件将被评估为。<a4j:commandButton>isDisabled()falsedisabledfalse
另外,最好通过一个基本示例来了解它是如何工作的。
风景:
<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>
Run Code Online (Sandbox Code Playgroud)
豆子:
@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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4996 次 |
| 最近记录: |