1

我在这里遵循了示例:为什么 <h:inputText required="true"> 允许空格?创建一个“全局”转换器来修剪所有输入字段。但是,提交输入字段时不会调用转换器。

@FacesConverter(forClass=String.class) 
... 
<p:inputText value="#{controller.inputValue}"/> 

但是当我改为:

@FacesConverter("StringTrimmer") 
... 
<p:inputText value="#{controller.inputValue}" converter="StringTrimmer"/> 

有用。

使用 Mojarra 2.1.7 和 PrimeFaces 3.2

4

3 回答 3

3

forClass只有当属性的类型是指定类的实例时,才会调用带有 a 的转换器。在您的特定情况下,这只能意味着#{controller.inputValue}is不是type String

于 2012-04-18T18:08:12.890 回答
1

如果您检查了绑定变量的类型是 String 并且转换器仍然没有被调用,您还可以检查以下内容:

  • 如果输入组件封装在复合组件中,您可能会遇到此问题。在这种情况下,将无法正确调用转换器,从而导致永远无法访问您的自定义方法。在输入组件上显式调用转换器可以解决此问题。

  • 如果将value="someName"和都添加forClass="someClass"@FacesConverter注释中,则 forClass 属性将被忽略。这已报告在这里

于 2012-10-05T14:49:22.877 回答
0

这不起作用,因为 inputValue 实际上不是字符串类型。一旦更改为 String 类型,它就起作用了。

于 2012-04-18T17:45:24.523 回答