我有一个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表单。

10-06 07:21
查看更多