Results 1 to 3 of 3

Thread: Neither referenceData nor formBackingObject are called

  1. #1

    Default Neither referenceData nor formBackingObject are called

    I implemented several SimpleFormController without any problems, but this time my referenceData and formBackingObject methods are not being called and I have no idea why. Here is a simplified version of my Controller:
    Code:
    ...
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.log4j.Logger;
    import org.springframework.web.servlet.mvc.SimpleFormController;
    import org.springframework.web.servlet.ModelAndView;
    
    public class MyController extends SimpleFormController {
    
      private static Logger LOGGER = Logger.getLogger(MyController.class);
    	
      protected ModelAndView onSubmit(Object formBackingObject) throws Exception {
        Map<String, Object> model = new HashMap<String, Object>();
        return new ModelAndView(this.getSuccessView(), model);
      }
    
      protected Object formBackingObject(HttpServletRequest request) throws Exception {
        LOGGER.info("[FORM BACKING OBJECT]");
        List <Item> selectedItems = ItemRepository.getSomeItems();
        return selectedItems;
      }
    
      protected Map<String,List<Item>> referenceData(HttpServletRequest request) throws Exception {
        LOGGER.info("[REFERENCE DATA]");
        Map<String,List<Item>> model = new HashMap<String,List<Item>>();
        List<Item> allItems = ItemRepository.geAllItems();
        model.put("allItems", allItems);
        return model;
      }
    	
      public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
        LOGGER.info("[HANDLE REQUEST INTERNAL]");
        Map<String, Object> model = new HashMap<String, Object>();
        return new ModelAndView(this.getFormView(), model);
      }
    
    }
    The logger is never called and in my JSPs no data is being received for the form.

    This is part of my formView jsp:
    Code:
    <spring-form:form>
      <spring-form:checkboxes path="selectedItems" items="${allItems}"/>
    </spring-form:form>
    BTW: I assume the path is wrong, but the methods above should be called although.

  2. #2
    Join Date
    Jun 2006
    Location
    The Netherlands
    Posts
    13,624

    Default

    It is because you override the handleRequestInternal method screwing up the normal path of execution for the SimpleFormController. So either call super.handleRequestInteral or don't override it.
    Marten Deinum
    Java Consultant / Pragmatist / Open Source Enthousiast / Author


    Pro Spring MVC: With Web Flow
    Conspect

    Have you read the reference guide.
    Use the [ code ] tags, young padawan

  3. #3

    Default

    Thank you! Problem solved.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •