Форма весны MVC регулируя pojos формы множественные

Мне нужна помощь в понимании некоторых форм обработки. Предположим, у меня есть два pojo, как показано ниже.

Первый:

public class Loginfo {
   private String username;
   private String password;

   // setters and getters ... 
} 

Второй:

pubic class PersonalInfo {
    private String name;
    private String age;
    private Loginfo loginfo;

    // setters and getters... 
}

И, наконец, у меня есть форма с полями:username,password,name,age.

Как обращаться с этой формой? Как должен выглядеть код контроллера?

2 ответа

  1. Вам понадобится конвертер JSON в приложении. Вы можете использовать Джексона для этой цели. Для этого вам потребуется ядро Джексона,databind и jar/зависимости аннотаций. Убедитесь, что все три jar/зависимости имеют одинаковую версию.

    Добавить ниже в dispatcher-servlet:

    <beans:bean
            class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
            <beans:property name="messageConverters">
                <beans:list>
                    <beans:ref bean="jsonMessageConverter" />
                </beans:list>
            </beans:property>
        </beans:bean>
    
        <!-- Configure bean to convert JSON to POJO and vice versa -->
        <beans:bean id="jsonMessageConverter"
            class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        </beans:bean>
    

    Приведенный выше код будет непосредственно преобразовывать объекты в JSON и наоборот, когда http-запрос поступает на контроллер.

    Код в контроллере будет выглядеть как:

    @RequestMapping(value = "/serviceName", method = RequestMethod.POST, headers = "Accept=application/json")
        public @ResponseBody void service(@RequestBody PersonalInfo personalInfo){
    }
    

    Убедитесь, что имя публикуемого var-personalInfo.

  2. приведенный выше ответ верен, но самый простой способ сделать это — просто назвать имя поля формы, например имя переменной pojo

    <input type="text" name="loginfo.username" />
    

    и вашего права следующий код в контроллере то что должно быть работать..

    @RequestMapping(value="yourMapping",method=RequestMethod.POST)
    public String yourMethodName(PersonalInfo info){
        return "yourMpaaing";
    }