I've been messing with this issue for a while. Basically I want to be able to search for StreetSections. Each StreetSection has a Street and a range of numbers. When you enter the search page the first time you see a list of Streets. Select one and enter a number and it will show you a list of StreetSections.
Originally I wanted to do this without a Model object. But when I made my FindStreetSectionsController with an AbstractController I noticed that the referenceData() method, which I use to load all Streets, wasn't being called. That's because it is only called when you use a *FormController and call showForm() or a method that calls showForm() (like onSubmit()). Eventually I got it working but was calling referenceData() by hand, which I thought was ugly. But, I thought, I can't use a *FormController because I am not using a Command (Model) object. After further thought though I realized that on the search page I always have a form with two fields - idStreet and number - the stuff to search for, so I decided to create a FindStreetSection Model object with those two fields , and that way I'd be able to use a BaseFormController and theoretically load automagically the Streets with referenceData(). But I have a problem - I am not sure what method to implement in my Controller. I have tried implementing both formBackingObject() and onSubmit() but my test is failing. Here is my Controller: protected Object formBackingObject() { FindStreetSection fss = new FindStreetSection(); String id = request.getParameter("id"); String number = request.getParameter("number"); if (!StringUtils.isBlank(id)) { fss.setIdStreet(new Long(id)); fss.setNumber(new Integer(number)); } return fss; } public ModelAndView onSubmit() { List<StreetSection> sections = null; FindStreetSection fss = (FindStreetSection) command; if (ft.getIdStreet() != null) { Street street = streetManager.get(fss.getIdStreet()); sections = streetSectionsManager.findByNumber(street, fss.getNumber()); } return new ModelAndView("findStreetSections", "sections", sections); } And here is my test: public void testSearch() throws Exception { MockHttpServletRequest request = newGet("/findstreetsection.html"); request.addParameter("id", "1"); request.addParameter("number", "196"); ModelAndView mav = c.handleRequest(request, new MockHttpServletResponse()); ModelMap m = mav.getModelMap(); assertNotNull(m.get("sections")); assertTrue(((List) m.get("sections")).size() > 0); } formBackingMethod() is being called but onSubmit() is not, thus my test fails saying sections is null. I think my test is correctly written, I am just not sure which method I need to implement in my Controller. onSubmit() doesn't seem to be it. Looking at other (form) tests, in order to get onSubmit() to be called it seems you have to do something like this: request = newPost("/findstreetsection.html"); super.objectToRequestParameters(fss, request); request.addParameter("number", "198"); in order for onSubmit() to be called. I tried this as well but no go. Anyway I never need to do any kind of save, update or delete, I simply am using a Command (Model) object to making searching easier. So which method to I need to implement in my Controller to get this to work? Thanks, Bob -- View this message in context: http://www.nabble.com/How-to-write-a-controller-and-test-for-%27find%27-functionality-tf4496287s2369.html#a12821913 Sent from the AppFuse - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]