【问题标题】:Getting Spring Web Flow to work with IE 7 forms让 Spring Web Flow 与 IE 7 表单一起工作
【发布时间】:2014-06-27 22:54:24
【问题描述】:

这是this question 的延续,在对 Spring Web Flow 进行了一些调试和 Spring Web Flow 中的事件处理之后重新聚焦。

我遇到了 Spring Web Flow 和 Internet Explorer 7 以及“兼容模式”下的 IE 11 的问题。我已经验证了这个问题,我只是不知道如何解决它。

我有一个带有多个按钮的 Web Flow 表单,这些按钮都使用Javascript onclick() handler 进行连接,因为它们都是type='button' 而不是type='submit'

<button id="addCurrentAccount" name="_eventId_addCurrentAccount" type="button" value="addCurrentAccount" class="buttonActivity add">
    <span>Add Current Account</span>
</button>

这是应该发生的:根据单击的按钮,提交表单时会触发不同的 Web Flow 事件。例如,标记为“删除帐户”的按钮应触发名为“_eventId_deleteAccount”的事件。标记为“创建帐户”的按钮应触发名为“_eventId_createAccount”的事件。

这适用于 IE 8 到 11、Chrome 和 Firefox。但是,在 IE 7 和 IE 11 的“兼容模式”下,页面上的每个按钮都会与表单一起提交。这意味着表单带有多个“_eventId_xxx”请求参数,并且由于第一个始终是“_eventId_createAccount”,因此页面上的每个按钮都会在表单上创建另一个帐户。

有一个简单的解决方法吗? (不幸的是,不,“不要使用 Web Flow”或“不要使用 IE 7”不是选项。)

【问题讨论】:

    标签: javascript spring internet-explorer spring-webflow-2


    【解决方案1】:

    尝试在javascript函数中专门指定eventId为:

        function includeEvent(eventId){
            document.getElementById("yourForm")._eventId.value = eventId;
            document.getElementById("yourForm").submit();
        }
    

    包含 _eventId 作为隐藏类型:

        <input type="hidden" name="_eventId" value="Continue"/>
        <button id="addCurrentAccount" name="addCurrentAccount" type="button" value="addCurrentAccount" class="buttonActivity add" onclick="javascript:includeEvent('addCurrentAccount')">
            <span>Add Current Account</span>
        </button>
    

    这样,您可以确保当用户单击输入按钮时会生成默认的“继续”事件,您需要自定义如何处理它。基于每个提供的按钮单击,相应的事件(请参阅将其作为参数传递给 javascript 函数)由提到的 javascript 函数设置。

    【讨论】:

    • 你能解释一下你的意思吗?据我所知,没有可以在元素上设置的实际 _eventId 属性,所以我不确定您的建议。
    • 现在我明白了 - 是的,这应该可以。我想出了一个稍微大一点的解决方法,我在这里记录了它:stackoverflow.com/questions/24437059/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多