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は、プロパティの型が指定されたクラスのインスタンスである場合にのみ呼び出されます。あなたの特定のケースでは、それはが typeで#{controller.inputValue}ないStringことを意味するだけです。

于 2012-04-18T18:08:12.890 に答える
1

バインドされた変数が String 型であり、コンバータがまだ呼び出されないことを確認した場合は、次のことも確認できます。

  • 入力コンポーネントが複合コンポーネント内にカプセル化されている場合、この問題が発生する可能性があります。その場合、コンバーターが正しく呼び出されず、カスタム メソッドに到達できなくなります。入力コンポーネントでコンバーターを明示的に呼び出すと、これが解決されます。

  • value="someName"アノテーションにとforClass="someClass"の両方を追加すると@FacesConverter、 forClass 属性は無視されます。これはここで報告されています。

于 2012-10-05T14:49:22.877 に答える
0

inputValue が実際には String 型ではないため、これは機能しませんでした。String 型に変更すると、機能しました。

于 2012-04-18T17:45:24.523 に答える