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

时间:2015-12-01 23:17:31

标签: 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>             

为简洁起见,我排除了其余的数据表。使用此代码,ajax事件从不附加,即使&#39;测试&#39;表达式在随后的“渲染”中完美地评估。稍后的html元素的属性。不幸的是,p:ajax不支持“渲染”#39;条件句。

我也试过c:选择/ c:何时,得到相同的结果。

这感觉就像是应该很容易做到的事情!我可能缺少一些简单的语法来使这项工作。

谢谢!

1 个答案:

答案 0 :(得分:1)

我通过使用disabled的{​​{1}}属性来修复此问题,并将条件作为值(当然否定)。

<p:ajax>