dupa
25-11-2006, 14:08
Sto cercando di capire Struts e leggevo il tutorial per Netbeans qui:
http://www.netbeans.org/kb/50/quickstart-webapps-struts.html
Son riuscito a far funzionare tutto tranne il pulsante di "Cancel".
In struts-config.xml ho:
<action-mappings>
<action input="/loginForm.jsp" name="NewStrutsActionForm" path="/login" scope="request" type="com.myapp.struts.NewStrutsAction">
<forward name="success" path="/loginSuccessful.jsp"/>
<forward name="cancel" path="/loginCancel.jsp"/>
</action>
<action forward="/loginOut.jsp" path="/logout"/>
<action path="/Welcome" forward="/welcomeStruts.jsp"/>
</action-mappings>
In NewStrutsAction.java ho:
public class NewStrutsAction extends Action {
private final static String SUCCESS = "success";
private final static String CANCEL = "cancel";
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
if (isCancelled(request)) {
return mapping.findForward(CANCEL);
}
return mapping.findForward(SUCCESS);
}
}
Funzionano sia il Submit, il Logout, Il Reset spiegati su quel tutorial, ma il "Cancel" non ne vuole sapere di funzionare.
Ecco loginForm.jsp:
<h1>Login Form</h1>
<html:link action="/logout">Logout</html:link>
<html:form action="login">
<table border="1">
<thead>
<tr>
<th><bean:message key="login.name" /></th>
</tr>
</thead>
<tbody>
<tr>
<td><html:text property="name" /></td>
</tr>
</tbody>
</table>
<html:submit value="Login" />
<html:reset />
<html:cancel />
<html:errors />
</html:form>
L'HTML generato:
<h1>Login Form</h1>
<a href="/LoginPage/logout.do">Logout</a>
<form name="NewStrutsActionForm" method="post" action="/LoginPage/login.do">
<table border="1">
<thead>
<tr>
<th>Name</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="text" name="name" value=""></td>
</tr>
</tbody>
</table>
<input type="submit" value="Login">
<input type="reset" value="Reset">
<input type="submit" name="org.apache.struts.taglib.html.CANCEL" value="Cancel" onclick="bCancel=true;">
<span style="color: red">Enter a name!</span>
</form>
In pratica quando clicco su Cancel, mi appare il seguente errore:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: org.apache.struts.action.InvalidCancelException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:211)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:231)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
root cause
org.apache.struts.action.InvalidCancelException
org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:942)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:207)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:231)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
note The full stack trace of the root cause is available in the Sun Java System Application Server Platform Edition 9.0 logs.
Qualcuno ha idee a riguardo? a me sembra di aver fatto tutto come detto dal tutorial, l'unico dubbio è che magari non gli piace il mio AS o la mia versione di Struts troppo recente? :confused:
http://www.netbeans.org/kb/50/quickstart-webapps-struts.html
Son riuscito a far funzionare tutto tranne il pulsante di "Cancel".
In struts-config.xml ho:
<action-mappings>
<action input="/loginForm.jsp" name="NewStrutsActionForm" path="/login" scope="request" type="com.myapp.struts.NewStrutsAction">
<forward name="success" path="/loginSuccessful.jsp"/>
<forward name="cancel" path="/loginCancel.jsp"/>
</action>
<action forward="/loginOut.jsp" path="/logout"/>
<action path="/Welcome" forward="/welcomeStruts.jsp"/>
</action-mappings>
In NewStrutsAction.java ho:
public class NewStrutsAction extends Action {
private final static String SUCCESS = "success";
private final static String CANCEL = "cancel";
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
if (isCancelled(request)) {
return mapping.findForward(CANCEL);
}
return mapping.findForward(SUCCESS);
}
}
Funzionano sia il Submit, il Logout, Il Reset spiegati su quel tutorial, ma il "Cancel" non ne vuole sapere di funzionare.
Ecco loginForm.jsp:
<h1>Login Form</h1>
<html:link action="/logout">Logout</html:link>
<html:form action="login">
<table border="1">
<thead>
<tr>
<th><bean:message key="login.name" /></th>
</tr>
</thead>
<tbody>
<tr>
<td><html:text property="name" /></td>
</tr>
</tbody>
</table>
<html:submit value="Login" />
<html:reset />
<html:cancel />
<html:errors />
</html:form>
L'HTML generato:
<h1>Login Form</h1>
<a href="/LoginPage/logout.do">Logout</a>
<form name="NewStrutsActionForm" method="post" action="/LoginPage/login.do">
<table border="1">
<thead>
<tr>
<th>Name</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="text" name="name" value=""></td>
</tr>
</tbody>
</table>
<input type="submit" value="Login">
<input type="reset" value="Reset">
<input type="submit" name="org.apache.struts.taglib.html.CANCEL" value="Cancel" onclick="bCancel=true;">
<span style="color: red">Enter a name!</span>
</form>
In pratica quando clicco su Cancel, mi appare il seguente errore:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: org.apache.struts.action.InvalidCancelException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:211)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:231)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
root cause
org.apache.struts.action.InvalidCancelException
org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:942)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:207)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:231)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
note The full stack trace of the root cause is available in the Sun Java System Application Server Platform Edition 9.0 logs.
Qualcuno ha idee a riguardo? a me sembra di aver fatto tutto come detto dal tutorial, l'unico dubbio è che magari non gli piace il mio AS o la mia versione di Struts troppo recente? :confused: