如何防止空格形式JSF h:inputText

use*_*962 2 jsf whitespace trim

在我的JSF 2.2应用程序中,当我创建JSF表单时,问题是我可以<h:inputText>在我从表单中插入空格时添加空格,它将使用我插入其中的值返回这些空格.所以我应该处理每个值mystring.tirm()以使空格无效.我可以使用任何其他东西来返回没有空格的值吗?我知道转换器和JavaScript,所以你能给我另一个选择吗?我不想使用任何转换器和JavaScript.

Bal*_*usC 19

我不想使用任何转换器和JavaScript

这里没有魔力.你必须编写代码来完成这项工作.我认为您更关心的是,您不希望在每个输入字段上重复相同的转换作业.

在这种情况下,只需String.class通过以下forClass属性注册转换器@FacesConverter.

@FacesConverter(forClass=String.class)
public class TrimConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) {
        String trimmed = (submittedValue != null) ? submittedValue.trim() : null;
        return (trimmed == null || trimmed.isEmpty()) ? null : trimmed;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object modelValue) {
        return (modelValue != null) ? modelValue.toString() : "";
    }

}
Run Code Online (Sandbox Code Playgroud)

这样,您无需在每个输入字段中声明转换器.它将透明地应用于String尚未注册显式转换器的每个模型值.

建议不要使用JavaScript方式,因为它完全在客户端运行,并且最终用户可以轻松地禁用和操作JavaScript.JSF转换器在服务器端运行,其结果不能由最终用户操纵.

  • 谢谢@BalusC 先生,你是一个如此友善和乐于助人的人。先生,在我们当前的项目中,我们使用 primefaces 5.2、JSF 2.2,对于 Integer,我们使用 p:InputText type="number",它允许我们添加数字,但问题是它接受多个 ..(点), ee、++(加号)、--(减号)符号。那么有没有可能的方法使其像 p:inputNumber 但没有每个整数字段的验证器。谢谢 - (2认同)