Модель форм Java / Spring - PullRequest
       7

Модель форм Java / Spring

1 голос
/ 03 марта 2011

Существует ли какая-либо библиотека абстракций форм моделей / сущностей, которую я могу использовать в проектах Spring?

Я ищу что-то вроде " Django Form Framework " или " Symfony Forms "в мире Java / Spring.

Основная идея состоит в том, чтобы упростить создание форм сущностей JPA и упростить создание контроллеров мультиформной обработки.

Ответы [ 2 ]

3 голосов
/ 04 марта 2011

Если я правильно вас понял, вы ищете способ связать сущность с формой (и разрешить пользователю добавлять / редактировать сущности)?В этом случае нет необходимости в другой платформе, Spring уже делает это очень хорошо.Быстрый пример:

Наш контроллер будет выглядеть следующим образом:

@Controller
@RequestMapping(value = "/addUser.html")
public class UserController {

  @Autowired
  private UserAccountService service;

  @Autowired
  @Qualifier("userValidator")
  private Validator userValidator;

  @ModelAttribute("user")
  public User getBackingObject() {
    //This gets the object we're letting the user edit.
    //This can be any POJO so a JPA entity should be fine.
    //Note that we're creating an object here but we could 
    //just as easily fetch one we already have from a database/service etc
    return new User();
  }

  @RequestMapping(method = RequestMethod.GET)
  public String showForm() {
    //The form to present to the user
    return "/addUser";
  }

  @RequestMapping(method = RequestMethod.POST)
  //note: here Spring has automatically bound the entries that have been input into the webform into the User param supplied here
  protected String onSubmit(User user, Errors errors, HttpServletRequest request) {

    userValidator.validate(user, errors);
    if (errors.hasErrors()) {
      //The validator showed up some errors so send the object back to let the user correct it
      return "/addUser";
    }

    //save our new user
    service.saveUser(user);

    //best practice is to redirect to another view to make sure the backing object is cleared
    return "redirect:/success.html";
  }

}

Тогда мы можем использовать макросы пружинной формы в нашем JSP для создания формы:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<title>Add a user</title>
</head>
<body>

<form:form commandName="user">
  <label for="firstname">first name</label> 
  <form:input path="firstname" /> <form:errors cssClass="errorText" path="firstname" />
  <label for="lastname">last name</label> 
  <form:input path="lastname" /> <form:errors cssClass="errorText" path="lastname" />
  <input type="submit" value="Save" />
</form:form>
</body>
</html>
0 голосов
/ 03 марта 2011

Я думаю, что Spring Roo делает то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...