我通过JSONP获取一个值到我的网页。现在我想用这个值更新backing-bean-property?怎么办呢?提前谢谢。
更新: 好吧,我的问题是有JavaScripts,JSF-Ajax-Calls和Webservices,我必须查看触发了哪个动作。我想我需要更详细地描述我的情况。
我的支持bean:
logger.debug("CaseController - save(): tempCaseId [ " + tempIshCaseId + "];");
我的xhtml-Page:
<!-- 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,这是必要的,否则系统将产生令牌超时,并且将抛出异常。 saveCaseButton将触发bean-action并将编辑后的setTempIshCaseId保存到数据库(如果有效)。总结一下,我想我只需要确保,当调用preSaveCaseButton时我更新了bean,你可以看到我尝试使用'process'-attribute。在调用saveCaseButton之后,我可以检查bean值。不幸的是我的log4j-logging-message告诉我,我的支持bean的值为''(tempIshCaseId ='')并且没有更新。
该怎么办?
答案 0 :(得分:1)
只需发送带有该值的请求参数即可。您提交表单的方式并不完全清楚,但您可以使用其中<h:inputHidden>
来表示。
<h:inputHidden id="hidden" value="#{bean.property}" />
在JS方面,只需使用获取的值更改其值,如下所示:
document.getElementById("form:hidden").value = fetchedValue;