Reputation: 89
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
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
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