I am getting following error …
POST http://localhost:8080/mytest/admin/user/delete?_dc=1329102157683 415 (Unsupported Media Type)
I get this error when EXTJS 4 Grid, tries to sync().
api: {
read:'admin/user/list',
create:'admin/user/add',
update:'admin/user/update',
destroy:'admin/user/delete'
},
reader: {
type: 'json',
root: 'users',
totalProperty: 'totalRecords',
successProperty: 'success'
},
writer: {
type: 'json',
writeAllFields: true,
encode: false//,
//root: 'user'
},
…..
……
this.getUsersStore().remove(this.selectedUser);
this.getUsersStore().sync();
Spring Controller..,
@Controller
@Scope("request")
public class UserFormController {
private static final long serialVersionUID = 5152065663578866866L;
private static final Logger log = Logger.getLogger(UserFormController.class);
@RequestMapping(method = RequestMethod.POST, value = "/admin/user/delete", headers = "Accept=application/json")
@PreAuthorize("hasAuthority('ROLE_ADMIN')")
public @ResponseBody
Map<String, ? extends Object> delete(@RequestBody
User user) {
if (log.isTraceEnabled()) {
log.trace("Entering method 'delete'");
}
Map<String, Object> modelMap = new HashMap<String, Object>();
List<Object> args = new ArrayList<Object>();
modelMap.put("success", true);
return modelMap;
}
Spring configuration….
<!-- JSON Converters -->
<bean id="jsonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonHttpMessageConverter" />
</list>
</property>
</bean>
<!-- uses the Jackson library's ObjectMapper to render the response content
as JSON -->
<bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
<bean id="mappingJacksonJsonView"
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="objectMapper" ref="jacksonObjectMapper"/>
</bean>
<!-- Content Delegate -->
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="html" value="text/html" />
<entry key="json" value="application/json" />
</map>
</property>
<property name="viewResolvers">
<list>
<ref bean="viewResolver" />
</list>
</property>
<property name="defaultViews">
<list>
<ref bean="mappingJacksonJsonView" />
</list>
</property>
<property name="favorPathExtension" value="false" />
<property name="favorParameter" value="true" />
<property name="useNotAcceptableStatusCode" value="true" />
</bean>
Let me know,
Thanks,
After debug stepping through every class in path…found that Jackson is just “dancing” without throwing any exception! It was failing on one of the attribute on pojo “User”. It simply can not deserialize java.util.Map containing objects. Strange thing is it can serialize every thing with no issues!