SERVLET_MAPPING Struts1 到 Spring 引导迁移中的后缀 .do

SERVLET_MAPPING Suffix .do in Struts1 to Spring Boot Migration

从 Struts1 迁移到 Springbooted Struts1,我遇到了解决问题的行动。

使用 ServletRegistrationBean、Struts1 将按预期运行(当调用 someAction.do 时,它可以正常工作)。

但是,问题与生成的 HTML 有关:

<html:form action="someAction" .../>

someAction的HTML渲染必须加.do后缀,但不是

<form action="someAction" .../>

调试html taglib后,我发现web.xml、servlet-mapping中的等效参数实际上并没有复制到ServletRegistrationBean中,虽然.addUrlMappings("*.do") 已指定

在下图中,pageContext.getAttribute() 为基本 Struts1 应用程序检索 '*.do',但它 return 在 Springbooted 应用程序中为 null。

我应该怎么做才能使 pageContext.getAttribute(Globals.SERVLET_KEY, PageContext.APPLICATION_SCOPE); return '*.do'?

@Bean
public ServletRegistrationBean strutsActionServlet() {
        
    ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
    servletRegistrationBean.setServlet(new myActionServlet());
    servletRegistrationBean.setLoadOnStartup(10);
    servletRegistrationBean.setName("StrutsServlet");
    servletRegistrationBean.addUrlMappings("*.do");

    servletRegistrationBean.addInitParameter("config", "/WEB-INF/struts-config.xml");
    return servletRegistrationBean;
}

我就是这样解决的 ServletContextEvent:

public void contextInitialized (ServletContextEvent sce) {
    ServletContext sc = sce.getServletContext ();
    sc.setAttribute(Globals.SERVLET_KEY, "*.do");
}