【发布时间】:2015-07-30 15:28:50
【问题描述】:
我在数据库中有一个表:
-
用户角色(字典)
- 身份证
- 姓名(管理员、用户...)
-
用户登录
- 身份证
- 电子邮件
- 密码
-
用户配置文件
- 身份证
- 名字
- 姓氏
-
用户
- 身份证
- IdUserLogin (FK)
- IdUserRole (FK)
- IdUserProfile (FK)
如何将值插入到以上三个表中?
我尝试过这样的事情:
控制器:
@Autowired
private UserProfilesService userProfilesService;
@Autowired
private D_UserRolesService d_UserRolesService;
@Autowired
private UserLoginsService loginsService;
@Autowired
private UsersService usersService;
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String getAddNewUserForm(Model model) {
UserProfiles userProfiles = new UserProfiles();
UserLogins userLogins = new UserLogins();
Users users = new Users();
model.addAttribute("userProfiles", userProfiles);
model.addAttribute("users", users);
model.addAttribute("userLogin", userLogins);
model.addAttribute("userRoless", d_UserRolesService.getAllRoles());
return "userNew";
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String processAddNewUserForm(@ModelAttribute("userProfiles") UserProfiles profileToBeAdded,
@ModelAttribute("userLogin") UserLogins loginToBeAdded, @ModelAttribute("users") Users userToBeAdded,
HttpServletRequest request) {
userProfilesService.addUser(profileToBeAdded);
loginsService.AddOrUpdateUser(loginToBeAdded);
usersService.AddOrUpdateUser(userToBeAdded);
return "redirect:/users";
}
JSP 页面:
<form:form class="form-horizontal" >
<fieldset>
<legend>New user</legend>
<!-- Login -->
<form:form modelAttribute="userLogin">
<form:hidden path="idLogin"/>
<div class="form-group">
<label class="control-label col-lg-2" for="Email">E-mail</label>
<div class="col-lg-10">
<form:input id="Email" path="Email" type="text" class="form:input-large"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-2" for="Password">Password</label>
<div class="col-lg-10">
<form:password id="Password" path="Password" class="form:input-large"/>
</div>
</div>
</form:form>
<!-- Profile -->
<form:form modelAttribute="userProfiles">
<form:hidden path="id"/>
<div class="form-group">
<label class="control-label col-lg-2" for="FirstName">FirstName</label>
<div class="col-lg-10">
<form:input id="FirstName" path="FirstName" type="text" class="form:input-large"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-2" for="LastName">LastName</label>
<div class="col-lg-10">
<form:input id="LastName" path="LastName" type="text" class="form:input-large"/>
</div>
</div>
</form:form>
<!-- Users -->
<form:form modelAttribute="users">
<form:hidden path="idUser"/>
<div class="form-group">
<label class="control-label col-lg-2" for="idUserRole">Role</label>
<div class="col-lg-10">
<form:select path="userRole" items="${userRoless}"
itemValue="IdUserRole" itemLabel="name" multiple="false"
class="span12">
</form:select>
</div>
<div class="form-group">
<label class="control-label col-lg-2" for="IdLogin">Id</label>
<div class="col-lg-10">
<form:input id="userLogin" path="userLogin" type="text" class="form:input-large"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-2" for="IdLogin">Id</label>
<div class="col-lg-10">
<form:input id="userProfile" path="userProfile" type="text" class="form:input-large"/>
</div>
</div>
</div>
</form:form>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="submit" id="btnAdd" class="btn btn-primary" value ="Add"/>
</div>
</div>
</fieldset>
</form:form>
【问题讨论】:
-
那么您面临什么问题?有什么例外,或者您没有在服务类中写什么?
-
1.当我有几个表单时,如何在方法 POST 中获取属性?现在我没有得到任何属性。 2.如何向表Users插入值?我需要最后一个插入 ID 还是什么?
-
在视图中,您必须采用一个
<form:form>并通过使用视图模型概念或使用模型来代替多个 modelAttribute,您必须在 POST 方法中仅采用一个 modelAttribute,并且在服务中您可以保存受人尊敬的模型单独或您可以使用级联选项。 This 将有助于学习如何将模型属性发送到 POST