org.apache.struts.actions.SwitchAction Error
Whenever I click save button from the DynamicIndex.jsp this error is being genrated. Anyone plz help me.
Error is :
javax.servlet.ServletException: Switch requires both 'prefix' and 'page' request parameters
at org.apache.struts.actions.SwitchAction.execute(SwitchAction.java:91)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:53)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:64)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:370)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7046)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3732)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
The Files r :
UserAction.java
package action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.actions.SwitchAction;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import javax.servlet.ServletException;
import java.util.Map;
import java.util.HashMap;
public class UserAction extends SwitchAction
{
public ActionForward remove(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
System.out.println("REMOVE USER");
return mapping.findForward("failure");
}
public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
System.out.println("SAVE USER");
return mapping.findForward("success");
}
public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
System.out.println("EDIT USER");
return mapping.findForward("failure1");
}
}
UserForm.java
package action;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
public class UserForm extends ActionForm
{
private String method=null;
private String userName=null;
public void setMethod(String method)
{
this.method = method;
}
public String getMethod()
{
return (method);
}
public void setUserName(String userName)
{
this.userName = userName;
}
public String getUserName()
{
return (userName);
}
public void reset(ActionMapping mapping, HttpServletRequest request)
{
this.method = null;
this.userName = null;
}
}
userForm.jsp
<%@ page language="java"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<html>
<head>
<title>Struts Form for Legacy userForm</title>
</head>
<body>
<table width="983" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>�</td>
</tr>
<tr>
<td height="100" width="100%">
<div align="left">
<img src="wxmainlogowhitespace.gif">
</div>
</td>
</tr>
<tr>
<td>�</td>
</tr>
<tr>
<td>�</td>
</tr>
<tr>
<td align="right">
<html:link action="www.google.com">Home</html:link>
</td>
</tr>
<tr>
<td align="center">
<html:form action="/userSubmit">
Enter UserName : <html:text property="userName" />
</td>
</tr>
<tr>
<td>
<html:submit property="method">
<bean:message key="userForm.edit"/>
</html:submit>
</td>
</tr>
<tr>
<td><!-- align="center">-->
<html:submit property="method">
<bean:message key="userForm.save"/>
</html:submit>
</td>
</tr>
<tr>
<td><!-- align="right">-->
<html:submit property="method">
<bean:message key="userForm.remove"/>
</html:submit>
</td>
</tr>
<tr>
<td align="center">
<html:cancel/>
</td>
</tr>
</table>
</html:form>
</body>
</html>
quote.jsp
<html>
<head>
<title>Wrox Struts Application</title>
</head>
<body>
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>�</td>
</tr>
<tr>
<td height="68" width="48%">
<div align="left">
<img src="wxmainlogowhitespace.gif">
</div>
</td>
</tr>
<tr>
<td>�</td>
</tr>
<tr>
<td>�</td>
</tr>
<tr>
<td>�</td>
</tr>
<tr>
<td>
Current Price : <%=request.getAttribute("PRICE") %>
</td>
</tr>
<tr>
<td>�</td>
</tr>
</table>
</body>
</html>
tv.jsp
<b>Thank You. Visit Once again</b>
f.jsp
<html>
<body>
<b>This is F page</b>
</body>
</html>
s.jsp
<html>
<body>
<b>This is S page</b>
</body>
</html>
web.xml
<web-app>
<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>config/admin</param-name>
<param-value>/WEB-INF/struts-config-admin.xml</param-value>
</init-param>
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
</web-app>
struts-config.xml
<struts-config>
<form-beans>
<form-bean name="userForm" type="action.UserForm"/>
</form-beans>
<action-mappings>
<action path="/switch" type="org.apache.struts.actions.SwitchAction">
</action>
<action path="/userSubmit"
attribute="userForm"
input="/userForm.jsp"
parameter="method"
name="userForm"
scope="request"
type="action.UserAction">
<forward name="success" path="/switch.do?page=/tv.do&prefix=/admin" />
<forward name="failure" path="/f.jsp" />
<forward name="failure1" path="/s.jsp" />
</action>
</action-mappings>
<message-resources parameter="ApplicationResources" />
</struts-config>
struts-config-admin.xml
<struts-config>
<action-mappings>
<action path="/switch" type="org.apache.struts.actions.SwitchAction">
</action>
</action-mappings>
</struts-config>
ApplicationResources.properties
userForm.remove=Remove
userForm.save=Save
userForm.edit=Edit