1

Ajax で検索を呼び出すためのリンクを含む jsf ページがあります。リンクはjavascriptで自動クリックされます。フォームは、liferay のポートレットのいくつかのインスタンスにあります。通常、すべて正常に動作しますが、リスナーが呼び出されないことがあります。

ポートレットで (最初の編集で欠落していたバインディング属性を追加しました):

<h:form id="result">
...
  <h:commandLink id="launch" binding="#{resultBackingBean.launchSearch}">
    <f:ajax event="click" render="errors content debug" listener="#{resultBackingBean.doSearch}" />
  </h:commandLink>
...
</h:form>

それが機能すると、次のトレースが表示されます。

12:55:10,476 DEBUG AFTER phaseId=[RESTORE_VIEW 1] viewId=[/views/search_result.xhtml]
12:55:10,476 DEBUG BEFORE phaseId=[APPLY_REQUEST_VALUES 2] viewId=[/views/search_result.xhtml]
12:55:10,476 DEBUG AFTER phaseId=[APPLY_REQUEST_VALUES 2] viewId=[/views/search_result.xhtml]
12:55:10,476 DEBUG BEFORE phaseId=[PROCESS_VALIDATIONS 3] viewId=[/views/search_result.xhtml]
12:55:10,476 DEBUG AFTER phaseId=[PROCESS_VALIDATIONS 3] viewId=[/views/search_result.xhtml]
12:55:10,486 DEBUG BEFORE phaseId=[UPDATE_MODEL_VALUES 4] viewId=[/views/search_result.xhtml]
12:55:10,486 DEBUG AFTER phaseId=[UPDATE_MODEL_VALUES 4] viewId=[/views/search_result.xhtml]
12:55:10,486 DEBUG BEFORE phaseId=[INVOKE_APPLICATION 5] viewId=[/views/search_result.xhtml]
12:55:10,486 DEBUG doSearch called
12:55:10,486 DEBUG AFTER phaseId=[INVOKE_APPLICATION 5] viewId=[/views/search_result.xhtml]
12:55:10,486 DEBUG BEFORE phaseId=[RENDER_RESPONSE 6] viewId=[/views/search_result.xhtml]
12:55:10,496 DEBUG AFTER phaseId=[RENDER_RESPONSE 6] viewId=[/views/search_result.xhtml]

自分のデバッグ トレースdoSearch が呼び出されていることがわかります。しかし、ページのリロード後にトレースが表示されず、リスナーが呼び出されないことがあります。私は常にDetected Ajax ResourceRequestトレースを持っていますが、BEFORE INVOKE_APPLICATION と AFTER INVOKE_APPLICATION の間には何もありません。

ページを再び機能させたい場合は、ページをリロードする必要があります。ページがリロードされた後にのみ動作が変化する可能性があるため、ロード中に何か問題が発生することがあったかのように。

doSearch を使用して Bean のスコープを変更しようとしました (viewScope から sessionScope へ)、f:ajax に immediate="true" を設定しようとしました。わからない...なぜ?:(

編集:

詳細については、findbugs を使用すると、ajax リクエストが表示されます。機能するケースでは、レンダリングするフィールドの更新があり、機能しないケースでは、ほとんど空の部分応答があります。

<partial-response>
  <changes>
    <update id="javax.faces.ViewState">6791417547372597471:4319149946307207422</update>
  </changes>
</partial-response>
4

0 に答える 0