0

我通过 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 = '') 并且没有更新。

该怎么做才知道?

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 回答