我正在用文件下载程序修复一个PrimeFaces面板,您可以从列表中选择一个文件并下载它。
现在,首先必须用左键选择文件,然后右击并选择“下载文件”。
然而,大多数人习惯于右击一个文件并选择“下载它”。
从下面的代码中可以看到,当您选择一个文件时,会调用actionlistener actionListener="#{downloadsController.selectFile}“,它正确地设置要下载的文件名,然后右击调用actionListener="#{downloadsController.downloadFile}".
当右击被调用时,如何使selectFile被调用?还是让右击访问file.name?
<p:panel id="propPanel">
<h:form>
<p:contextMenu for="fileExplorer">
<p:menuitem value="Download" actionListener="#{downloadsController.downloadFile}"
icon="ui-icon-arrowthickstop-1-s" ajax="false" >
<p:fileDownload value="#{downloadsController.fileToDownload}" />
</p:menuitem>
</p:contextMenu>
<p:scrollPanel style="height:300px">
<p:dataTable id="fileExplorer" var="file" value="#{downloadsController.files}"
emptyMessage="This folder is empty"
rowKey="#{file.name}" selectionMode="single" >
<p:column style="width:308px" sortBy="#{file.name}">
<f:facet name="header">
Name
</f:facet>
<p:commandLink style=" text-decoration: none;"
actionListener="#{downloadsController.selectFile}" update=":treePanel">
<f:param name="fileName" value="#{file.name}"/>
<p:spacer width="5" height="10" />
<h:outputText value="#{file.name}" escape="false"/>
</p:commandLink>
</p:column>
<p:column style="width:55px" sortBy="#{file.size}">
<f:facet name="header">
Size
</f:facet>
<h:outputText value="#{file.size}" escape="false">
</h:outputText>
</p:column>
</p:dataTable>
</p:scrollPanel>
</h:form>
</p:panel>发布于 2014-01-15 11:01:48
如果您正在使用Primefaces 4,您可以简单地使用行选择,如演示的这里。
<p:contextMenu for="cars">
...
</p:contextMenu>
<p:dataTable id="cars" var="car" value="#{tableBean.carsSmall}" rowKey="#{car.model}"
selection="#{tableBean.selectedCar}" selectionMode="single">
...
</p:dataTable> https://stackoverflow.com/questions/21133946
复制相似问题