Solved

Struts - Forward page Problem

Posted on 2004-08-18
13
402 Views
Last Modified: 2012-08-14
I have ShowList.jsp ( in my struts ) as follows:

 ----------------------            -----------------------------
|   FilterList.jsp      |          |  RegisterMaskList.jsp     |
|                           |         |                                    |
 ----------------------            -----------------------------
  ------------------------------------------------------------
|                                                                            |
|            show the list here                                      |
|                                                                            |
|                                                                            |
  ------------------------------------------------------------

As the JSP name describes, each has different operations and the two JSP's are included in ShowList.jsp.


My Action-Mapping in struts-config.xml is as follows:

<action-mappings>

<action  attribute="registerMaskForm" input="/jsp/ManageCapacity/RegisterMaskList.jsp" name="registerMaskForm"  path="/registerMask"  scope="request" type="de.grassgmbh.calendertool.action.RegisterMaskAction" unknown="false" validate="true">

<forward name="r_success" path="/jsp/ManageCapacity/ShowList.jsp" redirect="false" contextRelative="false" />
</action>

<!-- And similarly for my FilterForm.jsp -->

</action-mappings>


If i submit the /jsp/ManageCapacity/RegisterMaskList.jsp:

1. On *success* of vaidate() method in FormBean , it goes to /jsp/ManageCapacity/ShowList.jsp

2. On *failure* of validate() method in my FormBean ( ie. Form submission results in some errors like some field is empty.), it goes to /jsp/registerMask.do and shows the errors.

--> I want BOTH to go to /jsp/ManageCapacity/ShowList.jsp. In case of failure(2nd case above), i need to show the errors in /jsp/ManageCapacity/ShowList.jsp

How can i resolve this? Any ideas to trace out the problems?

Thanks.

Note: I tried redirect="true" also.
0
Comment
Question by:sangeetha
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 7
  • 6
13 Comments
 
LVL 35

Expert Comment

by:TimYates
ID: 11828823
You will have to remove the validate() method, and do your validation in the Action de.grassgmbh.calendertool.action.RegisterMaskAction

Then, you can add ActionErrors for faliures in validation, and still forward to the success page...

By default, if the validate() method returns anything, it goes back to the page that was posted, not to another page...

Tim
0
 
LVL 2

Author Comment

by:sangeetha
ID: 11829073
Is it possible to include validate() method in Action Class ? ...

Ok..

This is my Action class now: (It re-directs to /jsp/ManageCapacity/ShowList.jsp, but it doesnt show any errors ).

public class FilterAction extends Action {


  public ActionErrors validate( ActionMapping mapping,  HttpServletRequest request) {

            ActionErrors actionErrors = new ActionErrors();
            
            if(request.getParameter("startDate") == null || request.getParameter("startDate").trim().equals("")) {
                  actionErrors.add("startDate", new ActionError("filterForm.startDate.problem"));
            }
            
            if(request.getParameter("endDate") == null || request.getParameter("endDate").trim().equals("")) {
                  actionErrors.add("endDate", new ActionError("filterForm.endDate.problem"));
            }
            
            return actionErrors;
      }  
   
public ActionForward execute( ActionMapping mapping,        ActionForm form, HttpServletRequest request,  HttpServletResponse response) throws Exception {
            
          FilterForm filterForm = (FilterForm) form;
          Logger logger = Logger.getLogger("FilterAction");
          
          logger.info("Filter Action Invoked");
          
          return mapping.findForward("success");
      }
      
}

In the Console window, i get "Filter Action Invoked" .

Also, can i use validate() for Struts-Validator using "extends ValidatorForm" in my above Action Class.
0
 
LVL 2

Author Comment

by:sangeetha
ID: 11829084
i mean if i left the "startDate" field empty, it has to show the errors... but it is not showing. I need to show the error in my ShowList.jsp

Thanks for your patience.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 35

Accepted Solution

by:
TimYates earned 500 total points
ID: 11829154
public class FilterAction extends Action
{
    public ActionErrors validate( HttpServletRequest request)
    {
        ActionErrors actionErrors = new ActionErrors();
        if(request.getParameter("startDate") == null || request.getParameter("startDate").trim().equals(""))
        {
             actionErrors.add("startDate", new ActionError("filterForm.startDate.problem"));
        }
        if(request.getParameter("endDate") == null || request.getParameter("endDate").trim().equals(""))
        {
             actionErrors.add("endDate", new ActionError("filterForm.endDate.problem"));
        }
        return actionErrors;
    }  
   
    public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request,  HttpServletResponse response) throws Exception
    {
        FilterForm filterForm = (FilterForm) form;
        Logger logger = Logger.getLogger("FilterAction");
        logger.info("Filter Action Invoked");
        ActionErrors errors = validate( request ) ;
        if( !errors.isEmpty() )
        {
            logger.info( "Got errors" ) ;
            saveErrors( request, errors ) ;
        }
        return mapping.findForward("success");
    }
}
0
 
LVL 35

Expert Comment

by:TimYates
ID: 11829168
So basically, you call the validate method in the Action yourself, and if there are any errors, save them into the request object (using the saveErrors method supplied wih the Struts Action class)

Hope this helps :-)
0
 
LVL 2

Author Comment

by:sangeetha
ID: 11829284
fine...and how can i show the errors in my Page. I see "Got errors" in my console window. Ialso  need to show the error "Field cannot be empty" in my output page.

I defnined the error in resources file. and in my FilterList.jsp, i have the the following to show the erros:

<html:messages id="error">
  <TR><bean:write name="error"/></TR>
</html:messages>

Thanks for your help. :-)
0
 
LVL 35

Expert Comment

by:TimYates
ID: 11829329
try replacing:

<html:messages id="error">
  <TR><bean:write name="error"/></TR>
</html:messages>

with

<html:errors/>

And put:

errors.header=
errors.prefix=<TR>
errors.suffix=</TR>
errors.footer=

in your ApplicationResources.properties file

Also, make sure redirect="false" in the struts-config.xml

If you redirect, you have to write an interim stage to save the errors into the session instead of the request, and then write a listener to extract them back out again :-)

Tim
0
 
LVL 2

Author Comment

by:sangeetha
ID: 11829375
>> Also, make sure redirect="false" in the struts-config.xml

Ok.. If i have "true", it re-directs but doesn't show errors. If i set to "false" it shows errors (also shows RegisterList JSP, which i want :-) ) but in the URL, i see:

/jsp/filter.do

>> If you redirect, you have to write an interim stage to save the errors into the session instead of the request, and then write a listener to extract them back out again :-)

I think i should go for this. Could you please explain me about this? If this is getting longer, i will post a new Q for this.

Is what i am doing is a good way ? Or, Is there any other way ?
0
 
LVL 2

Author Comment

by:sangeetha
ID: 11829393
Ok.. I accept this and post a new Q.

Just small doubts.

1. Is this a good way ?

2. Can i extend ValidatorForm in my Action class,  because i want to use Struts-Validator (using validation.xml file) later.

Thanks.
0
 
LVL 35

Expert Comment

by:TimYates
ID: 11829425
the struts validator will take you back to the page that caused the error.

what you are doing is not what struts expects (going to next page even if there is a validation error), so you have to handle it yourslef like this :-(

You *may* be able to invoke the StrutsValidator yourself...I've never tried :-(

Good luck with it!!

:-)

Tim
0
 
LVL 2

Author Comment

by:sangeetha
ID: 11829464
Thanks.

http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_21097945.html

If it is not a problem, just one more Q :

Is there an alternate way of doing instead of my FIRST post. i.e. Instead of having 3 jsp's (2 form-bean, 2 form-action) ?
0
 
LVL 35

Expert Comment

by:TimYates
ID: 11829494
I'm not sure...can you explain the situation a bit more?  I am not 100% sure of the problem :-(

Ahhh, you mean stop having an action for each of the 2 jsps?

Sure, you can tie the same action, and actionform to more than one jsp.  But you have to be careful if the functionality is different depending on which page you are on, as things can start to get tricky (and debugging can start to become a nightmare) :-(

If I have missed the point, please explain more :-)

Tim
0
 
LVL 35

Expert Comment

by:TimYates
ID: 11829644
PS:  You should be able to delete your link question in JSP :-)
0

Featured Post

[Webinar] Code, Load, and Grow

Managing multiple websites, servers, applications, and security on a daily basis? Join us for a webinar on May 25th to learn how to simplify administration and management of virtual hosts for IT admins, create a secure environment, and deploy code more effectively and frequently.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
going to wrong jsp page 2 66
JDBC performance 8 32
Find out all repos that a user is most active on Github 1 50
convert Absolute path to relative path of FTP location 7 47
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.
Suggested Courses

738 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question