我有一个webapp和两个我想使用的模型。一个模型是学员,另一个是TraineeStatus。我想在Trainees中获取一个数组或TraineeStatus列表,然后将其传递给AngularJS视图,在select方法中显示它,最好的方法是什么?
Trainees.java
@Entity
public class Trainees {
@Id
@GeneratedValue
private int traineesID;
private int groupsID;
@ManyToOne
private TraineeStatus traineestatus;
private int customersID;
private String name;
private String surname;
private String phoneDetails;
private String email;
public Trainees(){
}
public Trainees(String name, String surname, String phoneDetails, String email, int id, int groupsID, TraineeStatus traineestatus, int customersID) {
super();
this.name = name;
this.surname = surname;
this.email = email;
this.phoneDetails = phoneDetails;
this.groupsID = groupsID;
this.traineestatus = traineestatus;
this.customersID = customersID;
}
//getters and setters
@Override
public boolean equals(Object object) {
if (object instanceof Trainees){
Trainees contact = (Trainees) object;
return contact.traineesID == traineesID;
}
return false;
}
@Override
public int hashCode() {
return traineesID;
}
}
TraineeStatus.java
@Entity
@Table(name="traineeStatus")
public class TraineeStatus {
@Id
@GeneratedValue
private int traineeStatusId;
private String value;
public TraineeStatus(){
}
public TraineeStatus(String value, int id) {
super();
this.value = value;
}
//getters and setters
@Override
public boolean equals(Object object) {
if (object instanceof TraineeStatus){
TraineeStatus value = (TraineeStatus) object;
return value.traineeStatusId == traineeStatusId;
}
return false;
}
@Override
public int hashCode() {
return traineeStatusId;
}
}
我的观点:
<div class="input-append">
<select
required
ng-model="contact.traineestatus"
name="traineestatus.id"
placeholder="<spring:message code='sample.status'/> ">
<option ng-repeat="trainee in contact.traineestatus" value="{{trainee.id}}">{{trainee.value}}</option>
</select>
</div>
<div class="input-append">
<label>
<span class="alert alert-error"
ng-show="displayValidationError && updateContactForm.traineestatus.id.$error.required">
<spring:message code="required"/>
</span>
</label>
</div>
目前contact.traineestatus返回一个具有id和value的对象,但我想得到一个数组。
我正在尝试使用该对象,所以我会有一个select函数,它会显示值并保存Id并将其保存在Trainees表中。
有没有办法利用这个对象并在我的选择中使用它?谢谢你!
答案 0 :(得分:2)
这有点难以解释,所以我会尽量保持简单。
首先,您需要记住,TraineeStatus
的列表不会在具有联系人/受训者列表的同一请求中检索,您将需要单独的HTTP请求来获取该列表。
与ContactRepository
获取所有Trainees
条记录的方式相同,您需要TraineeStatusRepository
才能获得所有TraineeStatus
条记录。然后,在您的某个服务上,您需要一种方法来获取TraineeStatus
列表,如下所示:
private List<TraineeStatus> findAllTraineeStatus() {
return traineeStatusRepository.findAll();
}
之后,您需要定义一个HTTP API来访问该列表(即GET http://example.com/traineeStatus)。这个想法可能与您必须检索ContactList相同。
然后,在AngularJS应用上,您需要使用一个函数来加载TraineeStatus
列表。例如:
$scope.getTraineeStatus = function () {
// assuming the HTTP API is: GET http://example.com/traineeStatus
$http.get('http://example.com/traineeStatus', config)
.success(function (data) {
$scope.traineeStatus = data;
})
.error(function (err) {
// handle error
});
}
然后遍历$scope.traineeStatus
上的ng-repeat
属性:
<select
required
ng-model="contact.traineestatus"
name="traineestatus.id"
placeholder="<spring:message code='sample.status'/> ">
<option ng-repeat="status in traineeStatus" value="{{status.id}}">{{status.value}}</option>
</select>