我有一个JSF页面,用户可以在其中向外部链接提交一些数据。但是,在这样做之前,我需要从支持bean调用本地操作。我可以通过什么方式实现这一目标?
这是我的表单的示例(由于外部链接操作,因此使用普通HTML):
<form method="POST" action="https://EXTERNAL-LINK.com/">
<input type="hidden" ... />
<button>Submit</button>
</form>
简而言之,这是我的情况:
提交表格我点击按钮
从Bean调用本地方法
提交表格到外部链接
关于如何实现这一目标的任何想法?
最佳答案
我将首先在后台通过AJAX提交JSF表单,并在响应到达时将您的纯HTML表单提交到外部URL。
例:
<script type="text/javascript">
function jsf(data) {
if(data.status == 'success') {
document.getElementById('plain-submit').click();
}
}
function normal() {
document.getElementById('jsf-submit').click();
}
</script>
...
<h:form prependId="false">
...
<h:commandButton id="jsf-submit" action="#{bean.action} value="Submit" style="display:none">
<f:ajax execute="@form" ... onevent="jsf"/>
</h:commandButton>
</h:form>
<form method="POST" action="https://EXTERNAL-LINK.com/">
...
<input id="button-submit" type="button" onclick="normal()" ...>Submit</input>
<input id="plain-submit" type="submit" style="display:none">Submit</input>
</form>
或者通过使普通的HTML表单不可见来扭转这种情况甚至更容易,从而减少了JavaScript操作的次数:您可以通过AJAX提交(可见的)JSF表单,然后在响应成功返回时提交(不可见的)普通的HTML表单。