這需要一個自定義驗證器。創建一個檢查預定義的值,如果找不到匹配,請檢查數字格式。基本例如:
@FacesValidator("myValidator")
public class MyValidator implements Validator
{
private List<String> predefinedValues = Arrays.asList("my", "list");
@Override
public void validate(FacesContext context, UIComponent component, Object value)
throws ValidatorException
{
String valueStr = (String) value;
// Check if value is predefined
if (predefinedValues.contains(valueStr)) {
return;
}
// If not predefined, check number format
if (! valueStr.matches("^\\d+(\\.\\d\\d?)?$")) {
throw new ValidatorException(new FacesMessage("Value is invalid!"));
}
// Check number limits...
}
}
驗證器可以在XHTML中使用如下:
<p:selectOneMenu editable="true" ...>
...
<f:validator validatorId="myValidator" />
</p:selectOneMenu>
正如你可以使用jQuery找到輸入字段和keypress
監聽綁定到它的替代品。例如參見:Jquery: filter input on keypress。但是,我會保留驗證器。例如,用戶可以粘貼文本。
參見:
謝謝你,但它不是我想要的。我已經有驗證器。我想實現的是,甚至不可能輸入。類似輸入掩碼。 – Smolda
我補充說,作爲答案的替代方案。 –
啊...這是有道理的。 :) – Smolda