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

时间:2015-10-20 09:50:58

标签: jsf whitespace trim

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

2 个答案:

答案 0 :(得分:17)

  

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

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

在这种情况下,只需通过String.class的{​​{1}}属性在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() : ""; } } 模型值,该值尚未注册显式转换器。

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

答案 1 :(得分:0)

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

当我创建字段类型&#34; char(20)&#34;。在这种情况下,我在 h:inputText 中获得了不必要的空格。

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

以下是对此的解释; Postgresql doc