我通过 JSONP 获取一个值到我的网页。现在我想用这个值更新一个 backing-bean-property?如何处理?提前致谢。
更新:好的,我的问题是有 JavaScript、JSF-Ajax-Calls 和 Web 服务,我必须看看什么时候触发了哪个动作。我想我需要更详细地描述我的情况。
我的支持豆:
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-Urls,这是必要的,因为否则系统将产生 Token-Timeouts 并且将引发异常。saveCaseButton 将触发 bean-action 并将编辑的 setTempIshCaseId 保存到数据库,如果它是有效的。总而言之,我想我只需要确保在调用 preSaveCaseButton 时我更新了 bean,如您所见,我尝试使用“进程”属性。在将调用 saveCaseButton 之后,我可以检查 bean 值。不幸的是,我的 log4j-logging-message 告诉我,我的支持 bean 的值为 '' (tempIshCaseId = '') 并且没有更新。
该怎么做才知道?