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

Jsf 有条件地将AJAX事件应用于数据表行,jsf,primefaces,Jsf,Primefaces,我对JSF和Primefaces比较陌生,但我的任务是尝试减少遗留代码库中的AJAX请求量。这个问题来自一个特定的示例,其中我们有一个目录,列出了文件和文件夹的UI <p:dataTable id="directoryTable" var="directoryObject" value="#{fileCabinet.folderContents}" resizableColumns="true" scrollable="true" rowKey="#{directoryO

我对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>             

为了简洁起见,我排除了datatable的其余部分。在这段代码中,即使“test”表达式在随后html元素的“rendered”属性中的计算结果非常好,也不会附加ajax事件。不幸的是,p:ajax不支持“呈现”条件

我还尝试了c:choose/c:when,以获得相同的结果

这感觉应该很容易做到!我可能缺少一些简单的语法来实现这一点


谢谢

我通过使用
disabled
属性,将我的条件作为值(当然是否定的),解决了这个问题


关于
失败的原因,请直奔本问答:关于性能问题,请不要忘记查看
部分问题:
<p:ajax event="rowSelect" 
        listener="#{fileCabinet.onRowSelect}"   
        update=":form:directoryTable :menu" 
        disabled="#{directoryObject.objectType ne 'DIRECTORY'}" />