ExtJS4 и Spring MVC3 Post error - PullRequest
       14

ExtJS4 и Spring MVC3 Post error

0 голосов
/ 13 февраля 2012

Я получаю следующую ошибку ...

POST http://localhost:8080/mytest/admin/user/delete?_dc=1329102157683 415 (неподдерживаемый тип носителя)

Я получаю эту ошибку, когда EXTJS 4 Grid, пытается синхронизировать ().

    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();

Контроллер пружины ..,

        @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;
            }

Конфигурация пружины ....

            <!-- 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>

Дайте мне знать,

Спасибо,

Ответы [ 2 ]

0 голосов
/ 04 апреля 2012

Джексон действительно способен десериализировать Список объектов, ему просто нужно знать их тип.
Я думаю, что в вашем случае это должно быть @RequestBody List<User> users
Насколько я знаю, REST-прокси всегда пытается группировать операции (что является причиной
у вас всегда есть список объектов).

0 голосов
/ 15 февраля 2012

После отладки, пройдя все классы в пути ... обнаружил, что Джексон просто "танцует" без каких-либо исключений! Сбой одного из атрибутов в pojo «Пользователь». Он просто не может десериализовать java.util.Map, содержащий объекты. Странно то, что он может сериализовать все без проблем!

...