将 Struts 1 迁移到 Struts 2 时,Struts 2 中的 FormTag 类缺少 getOnsubmit 方法

While migrating Struts 1 to Struts 2, the FormTag class in Struts 2 is missing a getOnsubmit method

提问人:Krishnaraj V 提问时间:12/10/2021 最后编辑:Roman CKrishnaraj V 更新时间:12/10/2021 访问量:259

问:

我正在执行 Struts 1 到 Struts 2 的迁移。我们有 Struts 1 代码,它扩展和自定义了 .做了一些搜索,发现 是 Struts2 中的等价物。org.apache.struts.taglib.html.FormTagorg.apache.struts2.views.jsp.ui.FormTag

我当前的 Struts 1 代码通过调用 来修改 的变量,但它首先通过执行如下操作来做到这一点。onsubmitFormTagsetOnsubmit()getOnsubmit()

    if (this.getOnsubmit() == null) {
        this.setOnsubmit(subCmd + subCmdEnd);
    }
    else {
        this.setOnsubmit(subCmd + this.getOnsubmit() + subCmdEnd);
    }

Struts 2 类具有 ,但没有 .我们是否有任何其他选项可用于读取该值?setOnsubmit()getOnsubmit()onsubmit

struts2 迁移 struts-tags

评论


答:

1赞 Roman C 12/10/2021 #1

<s:form> 标签属于 Struts 2 核心标签库。因此,如果您需要使用自己的标签来扩展此标签,那么您应该扩展org.apache.struts2.views.jsp.FormTag,并通过覆盖方法和添加其他方法来提供自己的实现。该字段具有修饰符。publiconsubmitprotected

但是,在对 Struts 2 框架进行任何更改之前,请向合格的专家咨询:为什么需要这样做?将旧代码带到新代码?为 S1 编写的代码与 S2 不兼容。

onsubmit是 HTML 标签的 HTML 属性,它可以在服务器上以任何其他方式设置,即使用 OGNL,或使用 JavaScript 在客户端上设置。<form>

此外,从 Struts1 迁移到 Struts 2 时,应阅读 Struts 1 到 Struts 2 的迁移策略

评论

1赞 Krishnaraj V 12/11/2021
谢谢@roman。我当前的 Struts 1 代码更改了 onSubmit,以便在提交表单时调用 JS 函数。如果我没看错你的答案,我将无法通过扩展 FormTag 来控制它,而应该使用 javascript 更改 JSP 中的 onsubmit。我认为这可能会有所帮助。[stackoverflow.com/q/17128026/11550524]让我检查一下。再次感谢