tags:

views:

655

answers:

0

How exactly can I trigger display of a model and view from another model and view’s controller? HTTP Request View --> HttpRequestController POST -> new HttpResponse POJO and a string of the POJO in XML as an Http Response msg to be sent back to the Requestor --> [what should I return from the POST handler?]

I have HttpRequestController() to handle a POST message with data from an input Form and populated an HttpRequest POJO with it. An HttpResponse POJO is composed and persisted along with the HttpRequest to a Db.

I made this HttResponse POJO an XML string as the @Responsebody to be sent back by the HttpRequestController() (as an actual HTTP Response message with header and body) and I want to present this HttpResponse POJO in a View.

HttpRequestController, HttpRequest and HttpResponse POJOs:

public class HttpRequestController:
 //public @ResponseBody String createResponse(@Valid HttpRequest httpRequest, BindingResult result, ModelMap model) {

 public @ResponseBody ModelAndView createResponse(@Valid HttpRequest httpRequest, BindingResult result, ModelMap model) {

        if (httpRequest == null) 
         throw new IllegalArgumentException("A HTTP Request Message is required");
        httpRequest.setHttpResponse(httpRequest.createResponse());  

        if (httpRequest.getHttpResponse() == null) 
         throw new IllegalArgumentException("Creation of the HTTP Response message failed!");

        httpRequest.persist();        

ModelAndView mav = new ModelAndView        //return new     
      mav.addObject("HttpResponse", httpRequest.getHttpResponse());
      model.addAttribute("httpresponse", httpRequest.getHttpResponse());
 return mav;
      //return "redirect:/httpresponse/" + httpRspMsg1.getId();
      //return httpRequest.httpRspMsg1;
      //return new ModelAndView("redirect:/httpresponse", "HttpResponse", httpRspMsg1);  
      //return new ModelAndView("forward:/httpresponse", "HttpResponse", httpRspMsg1);  
      //return new ModelAndView("/WEB-INF/views/httpresponse/show.jsp", "HttpResponse", httpRspMsg1);

public class HttpRequest() {
@Configurable
@XStreamAlias("HttpRequest")
@Entity
public class HttpRequest {

 @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
     private Long id;
 ….
  @OneToOne(cascade = CascadeType.ALL)
  @JoinColumn ( name = "rspId_fk", insertable = false, updatable=false)
  private HttpResponse httpResponse;
  // getter, setter   
}

@Configurable
@XStreamAlias("HttpResponse")
@Entity
public class HttpResponse {

 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 private long id;
 …..
}

I have an HttpResponse View (jspx) for ‘show’ and an unused HttpResponseController():

@RequestMapping("/httpresponse/**")
@Controller
public class HttpResponseController {

 @RequestMapping(value="/httpresponse/{id}", method=RequestMethod.GET)
 public String show(@PathVariable("id") Long id, ModelMap modelMap) {
          if (id == null) throw new IllegalArgumentException("An Identifier is required");
          modelMap.addAttribute("httpresponse", HttpResponse.findHttpRspMsg1(id));
          return "httpresponse/show";
      }     
 }
}

What should I return from the HttpRequestController().POST to trigger an HTTP Response message to be sent back and the data-sent-back to be shown on in an HTTP Response View?

I desperately need help. I’d be quite grateful for any pointers, any info or any suggestions. Please kindly help.

I tried different things, none worked and I could not find a similar example anywhere.