0
예를 들어 간단한 개체에서 속성 값을 선택하는 경우가 종종 있습니다.개찰구에서 선택 렌더러를 자동으로 분리
public class Customer {
private Integer customerSiteId;
}
public class CustomerSite {
private Integer id;
}
나는 실제 개체의 목록을 가지고 있습니다. CustomerSite
클래스이지만, 내 선택은 정수를 기반으로합니다. 즉, 선택 사항은 사이트 ID에 해당하는 정수입니다.
내가 내부적 효율성
public class IdSelectionRenderer<T, S> implements IChoiceRenderer<T> {
IModel<Map<T, S>> displayMap;
public IdSelectionRenderer(IModel<Collection<S>> displays, Function<S, T> idObtainer) {
displayMap = new LoadableDetachableModel<Map<T, S>>() {
@Override
protected Map<T, S> load() {
return displays
.getObject()
.stream()
.collect(Collectors.toMap(idObtainer, Function.identity()));
}
};
}
@Override
public Object getDisplayValue(T object) {
return displayMap.getObject().get(object);
}
@Override
public String getIdValue(T object, int index) {
return object.toString();
}
@Override
public T getObject(String id, IModel<? extends List<? extends T>> choices) {
return Optional
.ofNullable(choices.getObject())
.get()
.stream()
.filter(choice -> choice.toString().equals(id))
.findFirst()
.orElse(null);
}
}
에 대해 별도의 모델을 생성 등의 사용 사례에 대한 IChoiceRenderer
의 구현을 만들고 싶어 자동 개찰구가있는 내부의 엄격을 유지하면서 이러한 내부 모델을 분리 할 수있는 방법이 있나요 렌더러?
구성 요소에 연결된 모델의 수명주기는 분리되어 있습니다. 연결되어 있지 않은 경우에는 연결하지 마십시오. 나는 당신을 이해할 수 없다. –
컴포넌트에서 detach()를 오버라이드하여 분리하도록 선언 한 내부 모델을 연결할 수있다. 선택 렌더러에서 내부 모델을 연결하여 어떻게 든 분리 될 수 있는지 궁금합니다. 비헤이비어에는 자체 detach()가 있으므로 선택 렌더러에 비슷한 옵션이 있을지 궁금합니다. – WiseTree