learning knowledge
learning knowledge

Reputation: 89

Struts 1.x to Struts 2.5.16

i want to migrate struts 1 to struts 2.5.16

below is the web.xml for struts1

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
        <init-param>
            <param-name>boolean_val</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>param1</param-name>
            <param-value>value1</param-value>
        </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

so relevant web.xml for struts2.5.16 will be something like below

<filter>
    <filter-name>strutsFilterDispatcher</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    **<init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts.xml</param-value>
    </init-param>
        <init-param>
            <param-name>some-param</param-name>
            <param-value>someValue</param-value>
        </init-param>
        <init-param>
            <param-name>pathParam</param-name>
            <param-value>pathvalue</param-value>
        </init-param>**
    <load-on-startup>1</load-on-startup>
  </filter>

Below is my Action class

public class MyAction extends ActionSupport{
    public String execute()throws Exception{
            /*
                here how can i read init-params
            */
    }
}

so in MyAction class i want to read all the init-params which are configured in web.xml, how i can do this.?

Note : i want to extend ActionSupport class as i want to use getText() method for reading the values from ResourceBundle

Upvotes: 1

Views: 921

Answers (2)

vishnu
vishnu

Reputation: 165

Sample example. You can access the init parameters at filter level

 web.xml
   -------------
     <filter>
            <filter-name>TestFilter</filter-name>
            <filter-class>{path}+TestFilter</filter-class>
            <init-param>
                <param-name>some-param</param-name>
                <param-value>someValue</param-value>
            </init-param>
     </filter>
     <filter-mapping>
            <filter-name>TestFilter</filter-name>
            <url-pattern>/*</url-pattern>
     </filter-mapping> 

    java class
    -------------
    public class TestFilter implements Filter {

        private FilterConfig filterConfig = null;

        @Override
        public void destroy() { 
        }

        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain fc) throws IOException, ServletException {

            final HttpServletRequest req = (HttpServletRequest) request;
            final HttpServletResponse res = (HttpServletResponse) response;
            String paramterValue = filterConfig.getInitParameter("some-param");
            -----
            -------and you can set the paramterValue in request instance

            try {
                fc.doFilter(req, res);
            } catch (IllegalStateException e) {

            }

        }

         @Override
         public void init(FilterConfig arg0) throws ServletException {
            this.filterConfig =arg0;
         }
        }

Upvotes: 2

fustaki
fustaki

Reputation: 1614

Try this:

public class MyAction extends ActionSupport implements ServletContextAware{ 

    private ServletContext servletContext;
     
    public String execute() {
        String someValue = (String)servletContext.getInitParameter("some-param");
        System.out.println(someValue);
        return SUCCESS;
    }
     
    @Override
    public void setServletContext(ServletContext context) {
        this.servletContext = context;
    }
     
}

Upvotes: 1

Related Questions