In today's web applications the need for returning model data from controllers in XML/JSON format is quite common. Mostly these requirements are met by writing custom code in controllers. In this post I will present technical approach that would enable your applications to return data model in XML/JSON or data format of your choice to the web tier using Spring MVC without modifying your applications.
Basically the idea is to return XML(or JSON, etc) whenever we encounter a request to the controller with parameter
returnData=XML. This can be accomplished by writing a
HandlerInterceptorAdapter with postHandle method to do the following:
void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
{
if ( request.getParamter("returnData") != null && request.getParamter("returnData")="XML" )
{
// add a XML Serializer to the model
// Find the model object names and add the list to model attribute "xmlModules"
// Set the view name to "xmlView"
}
}
In your xmlView (JSP or Velocity Template) for each attribute in xmlModules use the XML Serializer to generate XML and render it. There are few applications for this approach:
1. Enable front-end to readily use AJAX for existing controllers
2. Use this as a strategy to get a debug view of model data during development
3. Based on some additional key use this to get debug view from production for troubleshooting purpose
Resources:
1.
XStream for XML Serialization
Tags:
java spring ajax