나는 다음과 같은 매핑 봄 컨트롤러Ajax 호출
@Controller
@RequestMapping("/accreq")
을 다음과 추가 부울 필드 org.springframework.samples.mvc.ajax.account.AvailabilityStatus
유사한 파일을 내가 노력하고있다 someBooleanValue
@RequestMapping(value = "/defRoles", method=RequestMethod.GET)
public @ResponseBody AvailabilityStatus loadDefaultRoles(
@RequestParam(value="idGroup", required=false) String groupID {
다음 jquery 아약스로이 메소드를 호출하려면
$.getJSON("${pageContext. request. contextPath}/accreq/defRoles.htm", { idGroup: $('#infoGroup').val() }, function(availability) {
if (availability.someBooleanValue) {
//Do this
} else {
//Do else
}
});
스프링 메소드가 실행 중이지만 406
응답이 반환됩니다. 무엇 dataType
성공적인 응답을 얻으려면 설정해야합니까? 이 사용은 Spring 3.1.4
에서 작동하며 이제는 3.2.4
또는 4.0.0
과 같은 스프링의 상위 버전에서는 작동하지 않습니다. 즉, Ajax 응답에서 객체 반환을 처리하는 방법은 무엇입니까?
응답 헤더 - 406
오류
Request Headersview source
Accept application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Connection keep-alive
구성은
<context:component-scan base-package="com.X" />
<mvc:annotation-driven />
<cache:annotation-driven />
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages" />
</bean>
...mapping for controller.....database etc
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
<property name="cache" value="true" />
<property name="order" value="1" />
</bean>
을 수정해야합니다. 그래서 기본적으로 Spring이 요청 매개 변수가 될 것으로 기대하는 반면 JSON은 콘텐츠를 서버에 보냅니다. –
같은 느낌이지만 방법이 호출됩니다. 문제는 응답에 대한 자세한 내용입니다. '406' 오류를 피하기 위해 응답을 어떻게 공식화해야합니까? –
메서드가 호출되는 것을 어떻게 테스트하고 있습니까? 응답은 요청한대로 HTML을 반환해야합니다 (콘텐츠가 HTML이 될 것으로 기대하는 .htm URL을 호출하고 있습니다). –