2016. 3. 8. 22:51ㆍplming/Java - Spring
@ResponseBody Annotation을 사용하게 되면
Controller에서 return "json결과"; 하는 경우
json으로 "json결과" 라는 String 을 받게된다.
Y/N 식의 단발성 DATA라면 관계 없지만
여러개의 결과값을 받고자 한다면
Map식의 결과를 받는 것이 좋다.
이럴 때 사용할 수 있는 방법이다.
* xxHTML.jsp 의 경우
$.ajax( {
type : "post",
url : "/xxProc.do",
data : $("#formid").serialize(),
dataType : "json",
success : function( data ) {
if( "Y" == data.result ) {
alert( data.message );
}
}
} );
* xxController.java 의 경우
@Controller
public class xxController {
@RequestMapping( value = "/xxProc.do" )
public ModelAndView xxProc( xxVO xxxVO, ModelMap model ) throws Exception {
model.put( "result", "Y" );
model.put( "message", "OK" );
return new ModelAndView( "jsonV", model );
}
이렇게 처리하기 위해 기본 설정이 필요하다.
* web.xml
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
* dispatcher-servlet.xml
<bean id="beanNameResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0" />
<bean id="jsonV" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
<property name="contentType" value="application/json;charset=UTF-8"></property>
</bean>
* pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.1</version>
</dependency>
'plming > Java - Spring' 카테고리의 다른 글
Interceptor 설정할 때 주의할 점 (0) | 2016.04.07 |
---|---|
redirect시 POST방식 Attribute 전달하기 (0) | 2016.03.15 |
전자정부프레임워크(egov) 파일업로드 (1) | 2015.10.06 |
Excel Upload (1) | 2010.12.20 |
ORM (Object Relation Mapping) (0) | 2010.09.12 |