【发布时间】:2018-07-26 19:12:33
【问题描述】:
给定以下 XHTML 代码(关于 PrimeFaces 5.0 final)。可以看到对数据表过滤器的新更改here。
<p:dataTable id="dataTable" var="row" value="#{testManagedBean}"
lazy="true"
rowKey="#{row.transporterId}"
widgetVar="dataTableUIWidget">
<p:column id="id" headerText="Id" sortBy="#{row.transporterId}">
<h:outputText value="#{row.transporterId}"/>
</p:column>
<p:column id="transporter" headerText="Transporter" filterBy="#{row.transporterName}">
<f:facet name="filter">
<p:inputText onkeyup="PF('dataTableUIWidget').filter();"/>
</f:facet>
<h:outputText value="#{row.transporterName}"/>
</p:column>
</p:dataTable>
以下是从字符串中修剪前导和尾随空格的面孔转换器。
@FacesConverter(forClass=String.class)
public final class StringTrimmer implements Converter
{
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return value != null ? value.trim() : null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return (String) value;
}
}
此转换器能否全局应用于数据表中指定的所有字符串类型的过滤器(包括其他 UI 组件已应用)?
<f:facet name="filter">
<p:inputText onkeyup="PF('dataTableUIWidget').filter();"/>
</f:facet>
或者我必须修改转换器类以具有类似的注释,
@ManagedBean
@RequestScoped
public final class StringTrimmer implements Converter
{
//...
}
然后像这样手动将此转换器应用于所有有问题的过滤器,
<f:facet name="filter">
<p:inputText onkeyup="PF('dataTableUIWidget').filter();" converter="#{stringTrimmer}"/>
</f:facet>
这个转换器能否以某种方式全局应用,这样我们就不需要为所有字符串类型过滤器显式指定converter="#{stringTrimmer}"?
这个问题应该更多地与 JSF 而不是 PrimeFaces 相关。
【问题讨论】:
标签: jsf primefaces jsf-2.2