【问题标题】:How to prevent spaces form JSF h:inputText如何防止 JSF h:inputText 中的空格
【发布时间】:2015-10-20 09:50:57
【问题描述】:

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

【问题讨论】:

  • 我不想使用任何转换器和javascript
  • 您可以在 setter 中使用 trim():this.field = field.trim().

标签: jsf whitespace trim


【解决方案1】:

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

这里没有魔法。您必须编写代码才能完成这项工作。我了解到您更关心的是您不想在每个输入字段上重复相同的转换工作。

在这种情况下,只需通过@FacesConverterforClass 属性在String.class 上专门注册一个转换器,如下所示。

@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() : "";
    }

}

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

不推荐使用 JavaScript 方式,因为它完全在客户端运行,最终用户可以轻松禁用和操作 JavaScript。 JSF 转换器在服务器端运行,其结果不能被最终用户操作。

【讨论】:

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

我认为真正的问题出在其他地方。我在表单中遇到了同样的问题(使用 postgresql 和 JSF 2.1)

当我创建一个字段类型“char(20)”时。在这种情况下,我在 h:inputText 中有不必要的空格。

然后我将字段类型更改为“字符变化(20)”。在这种情况下,h:inputText 中没有空格。

这是对此的解释; Postgresql doc

【讨论】:

    猜你喜欢
    • 2013-09-29
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2013-10-26
    • 2021-11-01
    • 1970-01-01
    相关资源
    最近更新 更多