AFAIK Primefaces 没有这个选项。你可以使用javascript来解决这个问题。
您必须为要限制的列设置 id,输入(用于过滤器)的默认 id 为filter
,然后您处理keydown event
以仅允许数字。例如,我创建一个表单(id="form"
),并嵌套一个数据表(id="cars"
),一个列(id="cl2"
),输入的 id 是filter
,然后我绑定keydown event
过滤用户键入的键:
<h:form id="form">
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$("#form\\:cars\\:cl2\\:filter").keydown(function(event) {
// Allow: backspace, delete, tab, escape, and enter
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else {
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
event.preventDefault();
}
}
});
});
//]]>
</script>
<p:dataTable id="cars">
<p:column id="cl2" headerText="MANUFAC" filterMatchMode="contains" filterBy="#{carr.manufacturer}">
</p:dataTable>
另请参阅:如何使用 jQuery 在 HTML 输入框中只允许数字 (0-9)?