这就是我们在界面中的内容:
我粘贴了我认为相关的代码部分,但可能需要更多内容。
按下按钮时,将调用userController.js save方法。在控制器中有$资源,$ save方法是"连接"使用UserController.java中的create方法,并且持久存在。
在界面中我有三个输入(dd,mm,yy),我想要保留的是具有java.time.LocalDate的用户。 我应该如何以及在何处对这三个输入进行映射/转换以便在LocalDate中进行转换?因为很明显,用户在.js中定义的方式和方式在.java中定义的是型动物。
在前端
user.html
<div class="form-group">
<label class="col-sm-2 control-label">Date of Birth</label>
<div class="col-sm-10">
<div class="form-inline">
<div class="form-group">
<label class="sr-only" for="txt_day">Enter Day</label>
<div class="col-sm-2">
<input type="text" id="txt_day" ng-model="user.birthdate.day" class="form-control" placeholder="DD" required maxlength="2"
data-validation-required-message="Day is required">
</div>
</div>
<div class="form-group">
<label class="sr-only" for="txt_month">Enter Month</label>
<div class="col-sm-2">
<input type="text" id="txt_month" ng-model="user.birthdate.month" class="form-control" placeholder="MM" required
maxlength="2" data-validation-required-message="Month is required">
</div>
</div>
<div class="form-group">
<label class="sr-only" for="txt_year">Enter Year</label>
<div class="col-sm-2 ">
<input type="text" id="txt_year" ng-model="user.birthdate.year" class="form-control" placeholder="YY" required
maxlength="4" data-validation-required-message="Year is required">
</div>
</div>
</div>
</div>
</div>
userController.js
$scope.user = new UserService();
$scope.save = function() {
$scope.user.$save(function() {
$location.path('/');
});
};
UserService.js
return $resource('rest/user/:action', {},....
在后端
UserController.java
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public User create(User user) {
LOGGER.info("create(): " + user);
return this.userDao.save(user);;
}
实体
@Column(nullable = false)
@Convert(converter = LocalDatePersistenceConverter.class)
private LocalDate birthDate;
答案 0 :(得分:0)
老实说,我发现您的应用程序通过休息服务将您的域实体暴露给外部。我不建议这样做,以确保分离关注原则。你现在遇到的这个问题就是因为这个原因。如果在您的应用程序中添加services / dto图层有点黄瓜,则可以采用以下方法:
@Entity
public class User{
@Column(nullable = false)
@Convert(converter = LocalDatePersistenceConverter.class)
private LocalDate birthDate;
@Transient
private birthDay
@Transient
private birthMonth
@Transient
private birth birthYear
..
@PrePersist
protected void prePersist()
{
birthDate = new LocalDate(birthDay, birthMonth, birthYear)
}
}
因此,您的实体将从您的javascript组件填充,而jpa提供程序会进行调整,从而创建一个jodatime对象。 希望这有效