【发布时间】:2016-11-14 17:50:57
【问题描述】:
我使用 JSF 2.2、Primefaces 6.0 和 CDI。我有一个datatable,它实现了延迟加载(datatable 从数据库下载数据)。每列都有一个过滤器字段。
其中一列必须有readonly 过滤器字段(我在显示datatable 之前将此过滤器的值保存在某个变量中)。所以,正如我所写的,这个过滤器字段应该是readonly(不可编辑)并且过滤器应该从这个字段中获取值进行过滤。 如何实现此功能?
我尝试添加inputtext 组件并设置readonly 属性:
<p:dataTable id="dataTableOfDataStore" var="obj" widgetVar="dataTableOfDataStoreVar"
value="#{formVisualizationController.dataTableLazy}"
lazy="true"
filteredValue="#{formVisualizationController.filteredDataTable}"
filterDelay="2000"
<!-- other attributes -->
>
<!-- other columns -->
<p:column headerText="Source IP" sortBy="#{obj.sip}"
filterBy="#{obj.sip}" filterMatchMode="contains">
<f:facet name="filter">
<p:inputText readonly="true" onchange="PF('dataTableOfDataStoreVar').filter()"
value="#{formVisualizationController.selectedSourceIPFieldOfFiltr.ip}"
style="width: 100%; background-color: #0088cc; color: #ffffff;"/>
</f:facet>
<h:outputText value="#{obj.sip}" />
</p:column>
<!-- other columns -->
</p:dataTable>
不幸的是,它不起作用。当我删除 readonly 属性时,它可以工作,但过滤器字段也可以编辑。
当然,我可以通过手动将此值传递给数据库查询,然后从列中删除过滤器并保留 inputtext 组件的值(以及 readonly 属性),但也许你知道一些不同的方法来实现这一点。
【问题讨论】:
标签: jsf primefaces filter datatable