devdar
devdar

Reputation: 5654

SpringMVC parameter issue in url

I have a page which i enter parameters to query a list of records. When the query button is clicked i get the list when an item form the list is clicked it takes me back to the first page with the record in display.

When i hit another button 'new' to clear the page and return an empty page a parameter is there in the url and it sets the value of an item on the page.The item that is there in the url is the crimeRecNo.

How can i get rid of this i want to return an empty page?

Scenario

  1. I am on a page with the following url :http://adomain/crimeTrack/crime_registration.htm

  2. I click Query which does a POST to another url which displays the list of records :http://adomain/crimeTrack/crimeList.htm

  3. On the above page in 2 above i then select one record which does a POST and takes me to the followig url: http://adomain/crimeTrack/getCrime/6.htm - where 6 is the crimeRecNo.

  4. I am now on the above url and i hit the 'NEW' button to get a blank form with the url in 1 above. When i hit new a POST is done to the controller method in code sample 4 under

This method does a redirect to the url which is mapped to a GET method however the final url looks like this : http://adomain/crimeTrack/%20crime_registration.htm?crimeRecNo=6

The value 6 remains in the crimeRecNo field and the entire form is not cleared.

Under is the controller methods:

1. Initial page request

@RequestMapping(value = "crime_registration.htm", method = RequestMethod.GET)
public ModelAndView loadPage(HttpServletRequest request,HttpServletResponse response, @ModelAttribute Crime crime,BindingResult result, ModelMap m, Model model, SessionStatus status,HttpSession session) throws Exception {

            try {


                logger.debug("In Crime Registration Controller");

                myCriminalList.put("dbcriminalList",
                        this.citizenManager.getListOfCriminals());
                ...................

                session.setAttribute("page", 0);


                return new ModelAndView("crime_registration");

            } catch (Exception e) {

                logger.debug("Exception In CrimeRegistration Controller : "
                        + e.getMessage());

                return new ModelAndView("crime_registration");

            }

        }

2. Query For List of Items

@RequestMapping(value = "crimeList.htm", method = RequestMethod.POST)
public ModelAndView handelCrimeList(@ModelAttribute Crime crime,
        BindingResult result, ModelMap m, Model model) throws Exception {

    if (crimeManager.getCrimesList(crime).size() <= 0) {

        model.addAttribute("dbcriminals", myCriminalList);
        ........

        model.addAttribute("crimeTypeList", crimeTypeManager.getCrimeTypeList(crime.getOffenceCatId()));

        model.addAttribute("icon", "ui-icon ui-icon-circle-close");
        model.addAttribute("results","Error: Query Caused No Records To Be Retrieved!");

        return new ModelAndView("crime_registration");
    }

    model.addAttribute("crimes", crimeManager.getCrimesList(crime));

    return new ModelAndView("crimeList");

}

3. Request For One Item/When item is selected from list

@RequestMapping(value = "getCrime/{crimeRecNo}.htm", method = RequestMethod.POST)
public ModelAndView getCrime(@PathVariable Integer crimeRecNo,
        @ModelAttribute Crime crime, BindingResult result, ModelMap m,
        Model model, HttpServletRequest request,
        HttpServletResponse response, HttpSession session) throws Exception {

    try {
        model.addAttribute("crime", crimeManager.getCrimeRecord(crimeRecNo));
        session.setAttribute("crimeRecNo", crimeRecNo);
        //model.addAttribute("victimList", citizenManager.getVictimListByCrimeRecNo(crimeRecNo));

    } catch (Exception e) {

        logger.error("Exception in CitizenRegistrationController - ModelAndView getCitizen "
                + e);
    }

    int crimeCatId = crimeManager.getCrimeRecord(crimeRecNo).getOffenceCatId();
    logger.info("crime category number is : "+crimeCatId);  

    myCrimeTypeList.put("crimeTypeList", this.crimeTypeManager.getCrimeTypeList(crimeCatId));


    model.addAttribute("dbcriminals", myCriminalList);
    .....
    session.setAttribute("crimeRecNo", crimeRecNo);

    return new ModelAndView("crime_registration");


}

4. Request For NEW Form

@RequestMapping(value = "crime_registration_new.htm", method = RequestMethod.POST)
public String loadNew(HttpServletRequest request,Model model,
        HttpServletResponse response,SessionStatus status,HttpSession session) throws Exception {

    status.setComplete();


    return "redirect: crime_registration.htm";
    //return new ModelAndView(new RedirectView("crime_registration.htm")); 


}

Upvotes: 0

Views: 656

Answers (1)

devdar
devdar

Reputation: 5654

Adding this to 4 did the trick

@RequestMapping(value = "crime_registration_new.htm", method = RequestMethod.POST)
public String loadNew(HttpServletRequest request,Model model,
        HttpServletResponse response,SessionStatus status,HttpSession session) throws Exception {

    status.setComplete();

  model.addAttribute("crime", new Crime());
    return "redirect: crime_registration.htm";
    //return new ModelAndView(new RedirectView("crime_registration.htm")); 


}  

Upvotes: 0

Related Questions