PDA

View Full Version : Problema con Struts


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:

orpheus
25-11-2006, 15:14
Prova a vedere qui

link (http://www.roseindia.net/struts/strutsActionForms.shtml)

dupa
25-11-2006, 16:15
Prova a vedere qui

link (http://www.roseindia.net/struts/strutsActionForms.shtml)

Colpito e affondato!
Grazie! ora funziona ;)

EmilianoLuzzi
11-02-2008, 12:30
Potresti postare come hai risolto il problema? Non riesco a venirne a capo!

Grazie

fracolmy
18-03-2008, 00:09
Potresti postare come hai risolto il problema? Non riesco a venirne a capo!

Grazie

Poichè si tratta di un tag peronalizzato di struts devi inportare la libreria nella pagina jsp...
Pertanto inserisci questo....

<%@ taglib uri="/tags/struts-html" prefix="html" %>
dove uri è il percorsoin cui si trova la libreria struts-htlm.tld
fammi sapere

cionci
18-03-2008, 12:09
Thread chiuso
|
V