SERVLET_MAPPING Суффикс .do в Struts1 для перехода на Spring Boot - PullRequest
0 голосов
/ 29 апреля 2020

Работая при переходе от 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 () извлекает '* .do' для базового c приложения Struts1, но в приложении Springbooted возвращает ноль. .

enter image description here

Что мне нужно сделать, чтобы 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;
}
...