ユーザーがinputTextフィールドをクリアしたことを検出できるようにするには、リスナー関数が必要です。テキストフィールドに新しい文字列が入力されると、バッキングBeanの値がすぐに更新され、リスナー関数が呼び出されますが、デバッグでは文字列がクリアされたときにバッキングBean変数がnullに設定されていませんリスナーが戻ってくるまで。リスナー関数は(backingBeanvariable == null)テストに依存するため、これは私の機能にエラーを引き起こしています。これを回避する方法はありますか?JSF ajaxリスナーは、テキストフィールドが空であることを知る必要があります
マイXHTML:
<p:column>
<p:inputText id="inputText" value="#{backingBean.variable}"
title="someTitle">
<p:ajax resetValues="true" listener="#{backingBean.onChange()}" />
</p:inputText>
</p:column>
バッキングBeanのリスナー関数:
public void onUiiTypeChange()
{
if (variable == null)
{
// some logic
}
}
EDIT:フィールドがクリアされたときに変数がNULL以外reather空の文字列に設定されるかもしれません。いずれにしても、これはリスナー関数が返されるまで発生しません。すなわち、フィールドがクリアされる前に "asdf"が含まれていた場合、リスナー関数が呼び出されたときに変数は "asdf"に設定されます。
参考までに、ご使用のサンプルが正しくセットアップされているため、再現できません。リスナーが呼び出された後にフィールドがnullに更新されたことをデバッグして見たが、変数が空の文字列(デフォルトの動作)に設定されている可能性があることに気づいたので、不一致があるようです。だから、より徹底的なデバッグが何が起こっているかを教えてくれる可能性があります。 – kingdc
http://www.stackoverflow.com/tags/jsf/infoでリクエストされているように、PFとJSFのバージョンを追加してください。 – Kukeltje