Как я могу Преобразовать XML в Объект с помощью Spring 3.0 mvc при выполнении УСПОКОИТЕЛЬНОГО запроса

Несколько человек уже подняли примеры, которые включают создание нового массива.

Несколько других вещей рассмотреть:

(a) Вместо того, чтобы на самом деле переместить данные, просто пересеките "повернутый" массив по-другому.

(b), Делающий оперативное вращение, может быть немного более хитрым. Вам будет нужно немного места царапины (вероятно, примерно равный одной строке или столбцу в размере). Существует древняя статья ACM о выполнении оперативного, транспонирует ( http://doi.acm.org/10.1145/355719.355729 ), но их примером кода является противный goto-загруженный ФОРТРАН.

Приложение:

http://doi.acm.org/10.1145/355611.355612 , другой, предположительно, выше, оперативный транспонирует алгоритм.

9
задан skaffman 11 June 2010 в 13:09
поделиться

1 ответ

Для преобразования XML в объект Java вы можете использовать Apache Digest http://commons.apache.org/digester/ . Spring использует его для внутренних целей.

Обновление Я не знал об этой новой функции в Spring 3.0. Извините за неправильное обращение с вами. Я написал быстрый тест, и это то, что вы должны сделать.

1) Настройте ViewResoler и MessageConverter в -servlet.xml. В моем тесте это выглядит так

    <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>

    <bean id="person" class="org.springframework.web.servlet.view.xml.MarshallingView">
        <property name="contentType" value="application/xml"/>
        <property name="marshaller" ref="marshaller"/>
    </bean>

    <oxm:jaxb2-marshaller id="marshaller">
        <oxm:class-to-be-bound name="com.solotionsspring.test.rest.model.Person"/>
    </oxm:jaxb2-marshaller>

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
          <list>
            <ref bean="marshallingHttpMessageConverter"/>
          </list>
        </property>
    </bean>

    <bean id="marshallingHttpMessageConverter" 
          class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
      <property name="marshaller" ref="marshaller" />
      <property name="unmarshaller" ref="marshaller" />
    </bean>

2) Добавьте аннотации структуры XML в свой класс Java


@XmlRootElement
public class Person {
    private String name;
    private int age;
    private String address;
    /**
     * @return the name
     */
    @XmlElement
    public String getName() {
        return name;
    }
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * @return the age
     */
    @XmlElement
    public int getAge() {
        return age;
    }
    /**
     * @param age the age to set
     */
    public void setAge(int age) {
        this.age = age;
    }
    /**
     * @return the address
     */
    @XmlElement
    public String getAddress() {
        return address;
    }
    /**
     * @param address the address to set
     */
    public void setAddress(String address) {
        this.address = address;
    }
}

3) Добавьте аннотацию сопоставления в ваш класс контроллера, например


@Controller
public class RestController {

    @RequestMapping(value = "/person", method = RequestMethod.PUT)
    public ModelMap addPerson(@RequestBody Person newPerson) {
        System.out.println("new person: " + newPerson);
        return new ModelMap(newPerson);
    }    
}

Надеюсь, это поможет вам.

8
ответ дан 4 December 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: