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");
}
从 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");
}