简体   繁体   English

为什么我在Struts 2应用程序中没有定义要采取行动的结果

[英]Why am I getting No result defined for action in Struts 2 application

Currently i am new to struts 2 but i have the knowledge but when i am trying to perform validation in struts to i am getting problem in my struts 2 example which is a custom validation example. 目前,我是Struts 2的新手,但是我有知识,但是当我尝试在Struts中执行验证时,我在自己的Struts 2示例中遇到了问题,这是一个自定义验证示例。 all code is below: 所有代码如下:

index.jsp 的index.jsp

  <%-- 
    Document   : index
    Created on : Jan 9, 2014, 10:58:52 AM
    Author     : manoj.sharma
--%>

<%@ taglib uri="/struts-tags" prefix="s" %>  
<s:form action="register">  
    <s:textfield name="name" label="Name"></s:textfield>  
    <s:password name="password" label="Password"></s:password>  
    <s:submit value="register"></s:submit>  
</s:form>  

welcome.jsp 的welcome.jsp

    <%-- 
    Document   : welcome
    Created on : Jan 9, 2014, 11:08:37 AM
    Author     : manoj.sharma
--%>

<%@ taglib uri="/struts-tags" prefix="s" %>  
Name:<s:property value="name"/><br/>  
Password:<s:property value="password"/><br/>  

RegisterAction.java RegisterAction.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.org.my.action;
import com.opensymphony.xwork2.ActionSupport;
/**
 *
 * @author manoj.sharma
 */
public class RegisterAction extends ActionSupport{  
private String name,password;

    //getters and setters 
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

public void validate() {  
    if(name.length()<1)  
        addFieldError("name","Name can't be blank");  
    if(password.length()<6)  
        addFieldError("password","Password must be greater than 5");  
}  

public String execute(){  
//perform business logic here  
    return "success";  
}  
}  

struts.xml 在struts.xml

<struts>
    <!-- Configuration for the default package. -->
    <package name="default" extends="struts-default">
        <action name="register" class="com.org.my.action.RegisterAction">  
            <result name="input">/index.jsp</result>
            <result name="success">/welcome.jsp</result>
        </action>  
    </package>
</struts>

Please check the code and let me know where i am making mistake in this validation example. 请检查代码,并让我知道在此验证示例中我在哪里出错。

Error on tomcat console: Tomcat控制台错误:

No result defined for action com.org.my.action.RegisterAction and result input
    at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:373)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:275)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:161)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

Jan 09, 2014 12:20:41 PM com.opensymphony.xwork2.util.logging.jdk.JdkLogger error
SEVERE: Exception occurred during processing request: No result defined for action com.org.my.action.RegisterAction and result input
No result defined for action com.org.my.action.RegisterAction and result input
    at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:373)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:275)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:161)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

thanks for all who can help me... 感谢所有可以帮助我的人...

I had the same problem i resolved this error: 我有同样的问题,我解决了这个错误:

You need to do one change in your index.jsp file. 您需要在index.jsp文件中进行一项更改。 Change the action in form. 更改表单中的操作。 (try both form lines one by one) (一一尝试两条表格线)

<%@ taglib uri="/struts-tags" prefix="s" %>  
    <s:form action="RegisterAction.action">  or  <s:form action="register.action"> 
        <s:textfield name="name" label="Name"></s:textfield>  
        <s:password name="password" label="Password"></s:password>  
        <s:submit value="register"></s:submit>  
    </s:form>  

I hope it solve your problem. 希望它能解决您的问题。

Try 尝试

public class RegisterAction extends ActionSupport{  
    private String name,password;

Separate into 分成

public class RegisterAction extends ActionSupport{  
    private String name;
    private String password;

I think this may work . 我认为这可能有效。 Change your struts.xml code 更改您的struts.xml代码

<struts>
<!-- Configuration for the default package. -->
<package name="default" extends="struts-default">
    <action name="register" class="com.org.my.action.RegisterAction">  
        <result name="input">/index.jsp</result>
        <result name="success">/welcome.jsp</result>
    </action>  
</package>

to

<struts>
<!-- Configuration for the default package. -->
<package name="default" extends="struts-default">
    <action name="register" class="com.org.my.action.RegisterAction">  
        <result name="success">/welcome.jsp</result>
        <result name="input">/index.jsp</result>
    </action>  
</package>

Just change the sequence of results .. First define success and then input 只需更改结果的顺序即可。首先定义success ,然后input

check your web.xml. 检查您的web.xml。 your web.xml has the below filters? 您的web.xml具有以下过滤器?

<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <listener>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

Well, I guess you know how struts work and you have done everything correct but still fail to find out what's wrong with your project. 好吧,我想您知道struts是如何工作的,并且您已完成所有正确的操作,但是仍然无法找出项目的问题所在。 You have your action class name mentioned correctly and methods name are correct. 您的动作类名称正确提及,方法名称正确。 Result pages are set correctly but still it fails. 结果页面设置正确,但仍然失败。 I have one thing that you should check. 我有一件事你应该检查。 For example, if you are taking name and age from web page and in action class you have set name as string and age as int as member variable of same class or in model driven fashion. 例如,如果要从网页和操作类中获取名称和年龄,则可以将名称设置为字符串,将年龄设置为int作为同一类的成员变量或以模型驱动方式设置。 In web page for testing purpose you have enter characters in both name and age. 在用于测试目的的网页中,您需要输入姓名和年龄。 In such case struts will check for action class which takes string as name and age but fails to find it. 在这种情况下,struts将检查动作类,该类将字符串作为名称和年龄,但找不到它。 Because the action class you created takes name as string and age as int. 因为您创建的操作类将名称作为字符串,将年龄作为int。 Hence 404 error is thrown. 因此,将引发404错误。

or you can try this. 或者您可以尝试一下。

I have found that changing the input helps in resolving this issue. 我发现更改输入有助于解决此问题。 I started my web application from the beginning by giving it proper refresh and it seem to resolve the issue. 我从一开始就通过适当刷新来启动Web应用程序,它似乎可以解决问题。

gyakhoe.com gyakhoe.com

change 更改

<struts>
<!-- Configuration for the default package. -->
<package name="default" extends="struts-default">
    <action name="register" class="com.org.my.action.RegisterAction">  
        <result name="input">/index.jsp</result>
        <result name="success">/welcome.jsp</result>
    </action>  
</package>
</struts>

to

<struts>
<!-- Configuration for the default package. -->
<package name="default" namespace="/" extends="struts-default">
    <action name="register" class="com.org.my.action.RegisterAction">  
        <result name="input">/index.jsp</result>
        <result name="success">/welcome.jsp</result>
    </action>  
</package>
</struts>

Change this - 改变这个-

<action name="register" class="com.org.my.action.RegisterAction">

to

 <action name="register" class="com.org.my.action.RegisterAction" method="execute">

in your Struts.xml file 在您的Struts.xml文件中

Thanks 谢谢

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 为什么我在Struts2 Action中没有得到初始化HttpServletRequest对象? - Why am i not getting initialize HttpServletRequest object in Struts2 Action? 为什么我得到这个结果? - Why am I getting this Result? 在 Struts 2 中使用自动完成后没有为操作定义结果 - No result defined for action after using autocomplete in Struts 2 Struts 2 - HTTP 状态 404 - 没有为操作定义结果 - Struts 2 - HTTP Status 404 - No result defined for action Struts未处理的异常-没有为操作定义结果-Struts Spring和Hibernate集成 - Struts unhandled exception - No result defined for action - Struts Spring & hibernate Integration 为什么我收到这个错误,即使我得到了结果? - Why am I getting this error, eventhough I am getting result? 在运行一个简单的Struts 2应用程序时遇到错误我正在使用Struts 2.5.10.1 - Getting error While running a simple Struts 2 application.I am using struts 2.5.10.1 在 struts 2 应用程序中没有操作映射错误 - Getting no action mapped error in struts 2 application 为什么我没有为名称空间/和操作名称loginAction映射任何操作? - why am i getting There is no Action mapped for namespace / and action name loginAction? 为什么在Java应用程序中收到ClassNotFoundException? - Why am I getting a ClassNotFoundException in a java application?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM