0

JSONP を介して自分の Web ページに値をフェッチします。この値で backing-bean-property を更新したいですか? これをどのように処理しますか?前もって感謝します。

更新: さて、私の問題は、JavaScript、JSF-Ajax-Calls、および Webservices があり、どのアクションがいつトリガーされたかを確認する必要があることです。私の状況をもっと詳しく説明する必要があると思います。

私のバッキングビーン:

logger.debug("CaseController - save(): tempCaseId [ " + tempIshCaseId + "];");

私のxhtmlページ:

<!-- JSONP-Wert in die Bean hieven -->
<t:div id="tempIshCaseIdContainer">
    <h:outputText id="setTempIshCaseId" value="#{CaseController.tempIshCaseId}" />
</t:div>
<a4j:commandLink id="preSaveCaseButton" onclick="setTempIshCaseId();" title="..."
    reRender="jsonpRemoteURLs,hNumberRemoteURL,eNumberRemoteURL,ishCaseRemoteURL,tempIshCaseIdContainer" oncomplete="jQuery('a#form_saveCaseButton').click()">
</a4j:commandLink>
<a4j:commandLink id="saveCaseButton" title="..." reRender="serverWarningsParent"  action="#{CaseController.save}" onclick="if (validateCaseFormEntries(){ closeCaseWarningsBox(); } else { return false; }" oncomplete="if (#{CaseController.success}){ showCaseModalPanel(); patientConsistencyCheck(#{NavigationController.globalErrorState}, '#{PatientController.patienlistUrl}'); startJsonpSetters(); saveCase(); initializeFocusBlurEvents();} else { return false;}">
</a4j:commandLink>
<a4j:commandLink id="postSaveCaseButton" onclick="hideCaseModalPanel();" reRender="caseContainer,modifiedContainer">
</a4j:commandLink>

私のJavascriptファイル:

function setTempIshCaseId(){// setze den Wert des a4j-value-Elements
var ishCaseId = jQuery('#form_ish').val();
jQuery('#form_setTempIshCaseId').text(ishCaseId);
}

ページのレンダリング後に 3 つのステージが得られました。preSaveCaseButton は、すべての JSONP-Url を更新する必要があります。そうしないと、システムがトークン タイムアウトを生成し、例外がスローされるためです。saveCaseButton は bean-action をトリガーし、編集された setTempIshCaseId が有効な場合はデータベースに保存します。要約すると、「プロセス」属性を使用しようとしたことがわかるように、preSaveCaseButton が呼び出されたときに Bean を更新したことを確認する必要があると思いました。saveCaseButton が呼び出された直後に bean-value を確認できます。残念ながら、私の log4j-logging-message は、バッキング Bean の値が '' (tempIshCaseId = '') で、更新されていないことを示しています。

何をすべきか知っていますか?

4

1 に答える 1

1

その値を使用してリクエストパラメータを送信するだけです。フォームをどのように送信するかは完全には明確ではありませんが、特に<h:inputHidden>これに使用できます。

<h:inputHidden id="hidden" value="#{bean.property}" />

JS側では、次のようにフェッチされた値で値を変更するだけです。

document.getElementById("form:hidden").value = fetchedValue;
于 2012-10-29T16:17:26.950 に答える