2012-10-29 105 views
0

我通過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 =''),並沒有更新。

怎麼知道?

回答

0

只需發送一個具有該值的請求參數。您提交表單的方式並不完全清楚,但您可以使用<h:inputHidden>

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

在JS的一面,只要改變它的值與所獲取的價值就像如下:

document.getElementById("form:hidden").value = fetchedValue; 
+0

謝謝,我添加了一些代碼,使我的問題更加清晰。 – Jochen