我通過JSONP向我的網頁獲取一個值。現在我想用這個值更新一個backing-bean屬性?如何處理這個?提前致謝。在action-method之前的JSF更新支持bean屬性
更新: 好的,我的問題是有JavaScript,JSF-Ajax-Calls和Webservices,我必須看看什麼時候觸發了哪個動作。我想我需要更詳細地描述我的位置。
我支持bean:
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);
}
我頁面的渲染後,得到了三個階段。 preSaveCaseButton應該更新所有的JSONP-Url,這是必要的,否則系統將產生Token-Timeouts,並拋出異常。 saveCaseButton將觸發bean操作並將編輯後的setTempIshCaseId保存到數據庫(如果有效)。總結一下,我想我只需要確保,在preSaveCaseButton被調用的時候,我更新了bean,正如你所看到的,我嘗試使用'process'屬性。在saveCaseButton被調用後,我可以檢查bean的值。不幸的是,我的log4j-logging-message告訴我,我的支持bean的值爲''(tempIshCaseId =''),並沒有更新。
怎麼知道?
謝謝,我添加了一些代碼,使我的問題更加清晰。 – Jochen