SPRINGMVC Customizing the Multi-View parser

Source: Internet
Author: User

The implementation of the request URL suffix to determine the return value type, such as Localhost:8080/list return JSP page, Localhost:8080/list.json return JSON format data

1. Create an enumeration return value type

Public enum resulttype {REDIRECT, JSP, JSON, XML}

2. Create a custom Viewresolver

1  Public classJsonviewresolverImplementsViewresolver {2 3     Privateview view;4 5      PublicView GetView () {6         returnview;7     }8 9      Public voidSetview (view view) {Ten          This. View =view; One     } A  - @Override -      PublicView resolveviewname (String viewName, locale locale) the             throwsException { -         return  This. View; -     } -  +}
Jsonviewresolver
1  Public classXmlviewresolverImplementsViewresolver {2 3     Privateview view;4 5      PublicView GetView () {6         returnview;7     }8 9      Public voidSetview (view view) {Ten          This. View =view; One     } A  - @Override -      PublicView resolveviewname (String viewName, locale locale) the             throwsException { -         return  This. View; -     } -  +}
Xmlviewresolver
1  Public classMultipleviewresolverextendsWebapplicationobjectsupportImplements2 Viewresolver {3 4     PrivateMap<string, viewresolver>resolvers;5     PrivateString Defaultviewresolvername =NULL;6 7      PublicMap<string, viewresolver>getresolvers () {8         returnresolvers;9     }Ten  One      Public voidSetresolvers (map<string, viewresolver>resolvers) { A          This. resolvers =resolvers; -     } -  the      PublicString Getdefaultviewresolvername () { -         returnDefaultviewresolvername; -     } -  +      Public voidsetdefaultviewresolvername (String defaultviewresolvername) { -Defaultviewresolvername =Defaultviewresolvername; +     } A      at     Privateviewresolver Getdefaultviewresolver () { -         return  This. Resolvers.get ( This. Defaultviewresolvername); -     } -  - @Override -      PublicView resolveviewname (String viewName, locale locale) in             throwsException { -Viewresolver Viewresolver =NULL; to         if(Viewname.equalsignorecase ("JSON") | | viewname.equalsignorecase ("XML"))) { +             return  This. Resolvers.get (ViewName). Resolveviewname (ViewName, locale); -         } the         intindex = Viewname.indexof (":"); *         if(Index = =-1) { $Viewresolver = This. Getdefaultviewresolver ();Panax Notoginseng}Else { -             if(viewname.substring (0, index). Equalsignorecase ("redirect")) { theViewresolver = This. Getdefaultviewresolver (); +}Else { AViewresolver = This. Resolvers.get (viewname.substring (0, index)); theViewName = viewname.substring (index + 1); +             } -         } $          $         if(Viewresolver! =NULL) { -             returnviewresolver.resolveviewname (viewName, locale); -         } the         return NULL; -     }Wuyi  the}
Multipleviewresolver

3. Create the Mybasecontroller so that all controllers inherit from it

1  Public Abstract classMybasecontroller {2 3      Public FinalString JSON = "JSON";4      Public FinalString XML = "xml";5 6     protectedstring result (Resulttype resulttype, string url) {7 8Resulttype = Resulttype = =NULL?ResultType.JSP:resultType;9 TenString ext =requestutil.getlookuppathextension (Threadlocalutil One . Getrequest ()); A  -         if(ext = =NULL) { -             if(Resulttype.equals (Resulttype.json) the||resulttype.equals (Resulttype.xml)) { -                 returnresulttype.name (). toLowerCase (); -             } -}Else if("JSON". Equalsignorecase (EXT) | | "XML". Equalsignorecase (EXT)) { +             returnext; -         } +         if(Resulttype.equals (resulttype.redirect)) { Aext =requestutil.getlookuppathfullextension (Threadlocalutil at . Getrequest ()); -             if(Ext! =NULL) { -URL + =ext; -             } -         } -  in         returnResulttype.name (). toLowerCase () + ":" +URL; -     } to}
Mybasecontroller

4.SpringMVC Configuration

<bean name= "Viewresolver"class= "Org.matrixframework.common.viewresolver.MultipleViewResolver" > <property name= "Defaultviewresolvername"                    Value= "jsp"/> <property name= "resolvers" > <map> <entry key= "JSP" > <!--JSP View Resolver--<bean name= "Internalresourceviewresolver"class= "Org.springframework.web.servlet.view.InternalResourceViewResolver" > <property name= "Viewcla SS "value=" Org.springframework.web.servlet.view.JstlView "/> <property name=" prefix "value="/ web-inf/views/jsp "/> <property name=" suffix "value=". jsp "/> </bean                    > </entry> <entry key= "JSON" > <!--JSON view parser-- <bean name= "Jsonviewresolver"class= "Com.framework.common.viewresolver.JsonViewResolver" > <property name= "View" > <beanclass= "Org.springframework.web.servlet.view.json.MappingJackson2JsonView" > <property name= "ContentType" value= "text/html; Charset=utf-8 "/> </bean> </property> & lt;/bean> </entry> </map> </property> </bean>

SPRINGMVC Customizing the Multi-View parser

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.