jsf - 有条件地将 AJAX 事件应用于数据表行

标签 jsf primefaces

我对 JSF 和 Primefaces 比较陌生,但我的任务是尝试减少旧代码库中发出的 AJAX 请求量。这个问题来自一个特定的示例,其中我们有一个列出文件和文件夹的 UI 的目录。

<p:dataTable id="directoryTable" var="directoryObject" value="#{fileCabinet.folderContents}" 
    resizableColumns="true" scrollable="true"
    rowKey="#{directoryObject}" selectionMode="single"
    selection="#{fileCabinet.currentObject}" dblClickSelect="true"
    sortMode="multiple" emptyMessage="This folder is empty"
    sortFunction="#{dataTableUtil.sort}">  

    <c:if test="#{directoryObject.objectType eq 'DIRECTORY'}">
        <p:ajax event="rowSelect" listener="#{fileCabinet.onRowSelect}"   
                            update=":form:directoryTable :menu" />                              
    </c:if>             

为了简洁起见,我排除了数据表的其余部分。使用此代码,即使“test”表达式在稍后的 html 元素的后续“rendered”属性中计算得非常好,ajax 事件也永远不会附加。不幸的是,p:ajax 不支持“渲染”条件。

我也尝试过 c:choose/c:when,得到相同的结果。

这感觉应该很容易做到!我可能缺少一些简单的语法来完成这项工作。

谢谢!

最佳答案

我通过使用disabled修复了这个问题<p:ajax> 的属性以我的条件作为值(当然是否定的)。

<p:ajax event="rowSelect" 
        listener="#{fileCabinet.onRowSelect}"   
        update=":form:directoryTable :menu" 
        disabled="#{directoryObject.objectType ne 'DIRECTORY'}" />                              

关于jsf - 有条件地将 AJAX 事件应用于数据表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34032051/

相关文章:

jsf - PrimeFaces 3 维数据表

javascript - 如何在检查 p :selectBooleanCheckbox 时打开确认对话框

jsf - 如何在 JSF 组件属性中使用 EL 条件运算符?

java - 如何用 Java 将通知从 EJB 容器发送到 Web 容器

jsf - 素面 tabView 上的 tabChange 事件不会在 ManagedBean 中设置值

java - PrimeFaces 4 的 taglib 定义在哪里?

jsp - javax.el.MethodNotFoundException : Method not found: TableBeanDetail@bd4053. onRowSelect()

java - JSF 中 render=true/false 问题的奇怪问题

jquery - JSF 中的占位符与 DatePicker?

java - ADF Faces 转义按钮不会触发 SelectionListener af :table 的 SelectionEvent