No result defined for action actions.AddExam and result input

10,851

The result input is triggered when some validation over the form is not correct. You must add that result into your mapped action tag over struts.xml:

<action name="addExam" class="actions.AddExam">
    <result name="success" type="chain">display-exams</result>
    <result name="error">/add_exam.jsp</result>
    <result name="input">/add_exam.jsp</result>
</action>

Doing that maybe you don't need that <result name="error">.

Share:
10,851
Vinay Bangalore Nagaraj
Author by

Vinay Bangalore Nagaraj

Updated on June 04, 2022

Comments

  • Vinay Bangalore Nagaraj
    Vinay Bangalore Nagaraj almost 2 years

    I'm inputting some Data that i want to add to a database. I'm doing it through a form like this:

    <s:form theme="simple" action="addExam">
                    <div id="reg">
                        <s:textfield name="exam.name" cssErrorClass="register error"
                            placeholder="Exam Name" cssClass="register" required="" />
                        <s:textfield name="exam.minutesAllotted"
                            placeholder="Minutes Allotted" cssClass="register" required="" />
                        <s:textfield name="exam.numQuestions"
                            placeholder="Number Of Questions" cssClass="register" required="" />
                        <sj:datepicker name="exam.startDate" cssClass="register"
                            placeholder="Start Date" displayFormat="dd/mm/yy" required="" />
                        <sj:datepicker name="exam.endDate" cssClass="register"
                            placeholder="End Date" displayFormat="dd/mm/yy" required="" />
                    </div>
                    <!-- Blue Button -->
                    <s:submit type="button" cssClass="button blue" value="Add" />
                </s:form>
    

    Relevant portion of struts.xml:

    <action name="addExam" class="actions.AddExam">
                <result name="success" type="chain">display-exams</result>
                <result name="error">/add_exam.jsp</result>
            </action>
    

    And my action is as follows:

    public class AddExam extends ActionSupport{
        //Has getter and setter with proper naming convention
        private Exam exam;
    
    
    
        @Override
        public String execute()
        {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("ExamModulePu");
            EntityManager em = emf.createEntityManager();
            ExamService service = new ExamServiceImplementation(em);
            Exam examResult = service.createExam(exam);
    
            String result;
            if(examResult==null)
            {
                addFieldError("exam.name", "Duplicate Exam Name");
                result = SUCCESS;
            }
            else
                result = ERROR;
    
            em.close();
            emf.close();
            return result;
        }
    

    My exam entity looks like this:

    @Entity
    public class Exam implements Serializable {
    
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private long id;
        @Column(unique = true)
        private String name;
        private int numQuestions;
        private int minutesAllotted;
        private Date startDate;
        private Date endDate;
        @OneToMany(mappedBy = "exam", orphanRemoval = true, cascade = CascadeType.ALL)
        private List<Question> questionList;
    }
    

    When i input data into this form i get an error "No result defined for action actions.AddExam and result input" with a stacktrace:

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

    I think it has something to do with the date input not being processed correctly and being set into my exam data member. I can pick a date from the drop down and select it but even if i input an invalid date such as 23/11/51325 it still allows me to submit and gives me the same error. Maybe it's a mismatch of format between my Date variable and the input?

    • Andrea Ligios
      Andrea Ligios almost 11 years
      startDate and endDate are java.util.Date ? Or some other stuff like java.sql.Date ? You should post the request taken with Firebug NET module too
    • Andrea Ligios
      Andrea Ligios almost 11 years
      And since you are chaining to another Action, that action configuration is relevant too
  • Vinay Bangalore Nagaraj
    Vinay Bangalore Nagaraj almost 11 years
    Do you have any idea what the validation error could be? That in itself is a bug because i get this result even when all the data inputted is valid..
  • Armaggedon
    Armaggedon almost 11 years
    @VinayBangaloreNagaraj No, but if you add what I suggest the error should appear in your form, and therefore you will be able to fix it.
  • Ema.jar
    Ema.jar almost 7 years
    Can you provide an example?
  • Veeranjaneyulu .Kota
    Veeranjaneyulu .Kota almost 7 years
    <result name="success" type="chain">display-exams</result>
  • Veeranjaneyulu .Kota
    Veeranjaneyulu .Kota almost 7 years
    <action name="display-exams" class="actions.DisplayExam"> <result name="success">/display-exams.jsp</result> </action>
  • Veeranjaneyulu .Kota
    Veeranjaneyulu .Kota almost 7 years
    Add your impl in the action class method
  • Veeranjaneyulu .Kota
    Veeranjaneyulu .Kota almost 7 years
    plz refer it this example
  • Vojtech Ruzicka
    Vojtech Ruzicka almost 7 years
    Please update your answer to contain additional info mentioned in the comments. Thank you.