facility
Java 스크립트에서이 열거 형 의 문자열에 액세스하려고합니다.
public enum FacilityEnum {
CAR_VALET("carValet"),
INDOOR("indoorPark"),
DISABLED_ACCESS("disabledAccess"),
EV_CHARGE("evCharge"),
private String facility;
private FacilityEnum(String facility) {
this.facility = facility;
}
public String getFacility() {
return facility;
}
public void setFacility(String facility) {
this.facility = facility;
}
}
이 열거 형은 Facility.class에서 사용됩니다.
@Entity
public class Facility {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long facilityId;
@Enumerated(EnumType.STRING)
private FacilityEnum service;
@ManyToMany(mappedBy = "facilities")
@JsonBackReference("parks-facilities-services")
private Set<Park> parks;
}
public FacilityEnum getService() {
return service;
}
public void setService(FacilityEnum service) {
this.service = service;
}
이것은 Park.class와 ManyToMany 관계가 있습니다.
문제는 facility
자바 스크립트 에서 문자열 을 사용해야 할 때 발생합니다.
이것은 자바 스크립트 관심 부분, 저는 Spring + Thymleaf를 사용하고 있습니다.
var parcheggi = JSON.parse([[${parks}]]); //my list of Parks
parcheggi.forEach(function (arrayItem) { //it's ok
var parcheggio = arrayItem;
var services = parcheggio.facilities; //it's ok, i get Facility objects
var servicesDiv = '<div>';
services.forEach(function (service){
var s = service; //the single Facility
servicesDiv += '<img src="/images/park_icons/facilities/' + s.service + '.png" />'
});
servicesDiv += '</div>';
//rest of the code...
이 경우 s.service
는 대략적인 Enum (CAR_VALET, INDOOR ...)입니다. 만약 내가 s.service.facility
정의되지 않으면 .. carValet, indoor, disabledAccess 등이 필요합니다.
원하는 작업을 수행하는 한 가지 방법은 toString 메서드를 사용하여 열거 형을 직렬화하도록 개체 매퍼를 구성하는 것입니다. 개체 매퍼 구성에 다음을 추가합니다.
objectMapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
(이전 Jackson 버전은이 속성과 동일하지만 다릅니다).
그런 다음 enum에 toString을 추가하십시오.
@Override
public String toString ()
{
return facility;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다