在从 Struts1 迁移到 Springbooted Struts1 的过程中,我遇到了解决问题的行动。
使用ServletRegistrationBean
,Struts1 将按预期运行(调用 someAction.do 时,它可以正常工作)。
但是,问题与生成的 HTML 相关:
<html:form action="someAction" .../>
的 HTML 呈现someAction
必须以 为后缀.do
,但事实并非如此。
<form action="someAction" .../>
在调试 html taglib 后,我发现 web.xml 中的等效参数servlet-mapping
实际上并没有复制到 中ServletRegistrationBean
,尽管。.addUrlMappings("*.do")
指定了
在下图中,pageContext.getAttribute() 为基本 Struts1 应用程序检索 '*.do',但它在 Springbooted 应用程序中返回 null。
我该怎么做才能pageContext.getAttribute(Globals.SERVLET_KEY, PageContext.APPLICATION_SCOPE);
返回“*.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");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句