2013-08-14 2 views
1

Я изучаю Spring MVC с плитками 3, JPA и всеми остальными классными вещами. Я создал форму для передачи данных, ниже форма:Поле настройки формы Spring MVC как null

<form:form method="POST" action="https://stackoverflow.com/users/save" enctype="multipart/form-data" modelAttribute="formUsuario"> 
    <form:label path="username" for="username">Username</form:label> 
    <form:input type="text" id="username" path="username" class="span4" value="${user.username}" /> 
    <form:label path="firstName" for="firstName">First name</form:label> 
    <form:input type="text" id="firstName" path="firstName" class="span4" value="${user.firstName}" /> 
</form:form> 

Метод внутри контроллера, чтобы добавить новую запись:

@Secured("ROLE_USER") 
@RequestMapping(value = "/new", method = RequestMethod.GET) 
public String getNew(@ModelAttribute("formUsuario") br.com.rodrigoferra.domain.User user) { 
    logger.info("Add new user"); 
    return "users/edit"; 
} 

Метод, чтобы сохранить новую запись:

@Secured("ROLE_USER") 
@RequestMapping(value = "/save", method = RequestMethod.POST) 
public @ResponseBody String doSave(@ModelAttribute("formUsuario") br.com.rodrigoferra.domain.User user, BindingResult results, Model model) { 
    if(results.hasErrors()) { 
     return "users/edit"; 
    } 
    user = userRepository.save(user); 
    logger.info("Username: " + user.getUsername()); 
    return "redirect:/users/"; 
} 

Он сохраняет запись, но сохраняет все как Null! Данные из формы принимаются контроллером. Я много искал и нашел те же примеры, что и это, но я не могу заставить мои работать!

Есть ли какая-либо конфигурация, которую я пропустил?

Спасибо и извините за мой плохой английский.

Отредактировано:

Пользователи боб:

@Entity(name="users") 
public class User implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long id; 

    private String firstName; 
    private String lastName; 

    @Column(unique=true) 
    private String username; 

    private String password; 
    @Transient 
    private String passwordConfirmation; 

    private Date birthdate; 

    private String signature; 
    private String email; 
    private String sex; 

    private int active; 
+0

Вставить код класса User – harrybvp

+0

Да подробности класса пользователя было бы полезно. Кроме того, что такое 'userRepository' – cowls

+1

@cowls' userRepository', вероятно, является компонентом '@ Repository', который обрабатывает доступ к данным. – Sithsu

ответ

2

Используйте Firebug или аналогичный инструмент, чтобы увидеть, если значения полей формы правильно включены в запросе, и запрос отправляется исправлять URI.

Журнал (или отладка) и проверьте содержимое объекта user сразу после получения запроса, в doSave().

Запишите (или отлаживайте) и проверьте содержимое объекта user в userRepository.save(), чтобы убедиться, что все значения доступны до его сохранения.

После может быть истинную причину, но первая проверка выше будет сглаживать других Каковы возможности

enctype="multipart/form-data" Удалить в определении формы, как эта форма не собирается посылать двоичные данные.
Проверьте следующее для получения дополнительной информации о том, что:
What does enctype='multipart/form-data' mean?
Form content types in HTML 4 spec
Multipart form data encoding in HTML 5 spec

+0

Firebug отправляет данные RequestPayload, ------ WebKitFormBoundary0dEr9CJVMOP5TYVA Content-Disposition: form-data; name = "firstName" Rodrigo. –

+0

Удален предложенный enctype. –

+0

@RodrigoFerrari Сработало? – Sithsu

Смежные вопросы