Default result is not rendering using result for my package alone. Flow goes to my n0result
method then It throws Exception
.
Please correct my wrong configuration.
Output :
Hello How are you noresult() method got called.....
Dec 26, 2013 12:48:04 PM org.apache.struts2.dispatcher.Dispatcher serviceAction
SEVERE: Could not find action or result
No result defined for action leo.struts.HelloWorldAction and result noresult - action - file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Strut2Examples/WEB-INF/classes/struts.xml:99:93
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:350)
Form:
<s:form action="noresultactionupdate" >
<s:submit value="noresultactionupdate"/>
</s:form>
Struts.xml
<package name="resultpackage" extends="struts-default">
<result-types>
<result-type name="defaultdispatcher" default="true"
class="org.apache.struts2.dispatcher.ServletDispatcherResult" />
</result-types>
<action name="noresultactionupdate" class="leo.struts.HelloWorldAction" method="noresult">
<result name="success">/noresultend.jsp</result>
<result name="defaultdispatcher">/noresultdefaultdispatcher.jsp</result>
</action>
</package>
Action :
public String noresult() throws Exception {
System.out.println("Hello How are you noresult() method got called.....");
setMessage("noresult");
return "noresult";
}
Nothing wrong with the struts configuration. What is wrong is that "noresult"
result is not found in the action configuration. You have either configure a result or return a result code that you have in the action config such as SUCCESS
for example.
public String noresult() throws Exception {
System.out.println("Hello How are you noresult() method got called.....");
setMessage("noresult");
return Action.SUCCESS;
}
What ever the string value
your are returning from the action class method. You must declare a result name with the returned string value
.
example in your code:
Change
<result name="success">/noresultend.jsp</result>
to
<result name="noresult">/noresultend.jsp</result>
OR
You can add one more result in the action. like below
<action name="noresultactionupdate"
class="leo.struts.HelloWorldAction" method="noresult">
<result name="success">/noresultend.jsp</result>
<result name="noresult">/noresultend.jsp</result>
<result name="defaultdispatcher">/noresultdefaultdispatcher.jsp</result>
</action>
I hope It ll work.
来源:https://stackoverflow.com/questions/20780945/no-result-defined-for-action-and-result