0
"태피스트리 작동 방식"을 이해하면 작은 문제가 다시 발생합니다.Tapestry : 런타임시 삽입
내가 (이 경우 값 인코더)를 태피스트리 구성 요소에있어:
public class EditionEncoder implements ValueEncoder<Edition>, ValueEncoderFactory<Edition> {
@Inject
private IEditionManager editionDao;
public EditionEncoder(IEditionManager editionDao) {
this.editionManager = editionDao;
}
@Override
public String toClient(Edition value) {
if(value == null) {
return "";
}
return value.getName();
}
@Override
public Edition toValue(String clientValue) {
if(clientValue.equals("")) {
return null;
}
return editionManager.getEditionByName(clientValue);
}
@Override
public ValueEncoder<Edition> create(Class<Edition> type) {
return this;
}
}
인코더가 같은 페이지 내에서 생성되기 때문에, 관리자가 작동하지 않는 주입 :
public void create() {
editionEncoder = new EditionEncoder();
}
을
@Inject
private IEditionManager editionmanager;
editionEncoder = new EditionEncoder(editionManager);
이 더 나은 방법이 있나요 : 이것에 의해 casued
, 난이 추한 솔루션을 사용하도록 강요하고 있습니다 런타임 중에 컴포넌트를 삽입하거나 일반적으로 더 나은 솔루션이 있습니까? 사전에 도움을
감사합니다, 최대한 빨리 "새"가 다음 태피스트리 - IOC가 객체 생성에 관여하지 않습니다 사용하여 주입 할 수 없기 때문에
yip, 그건 분명합니다. 예 : 봄에는 수동으로 인스턴스화 된 객체를 사용하여 주입 메커니즘을 "강제"할 수 있습니다. 나는 비슷한 방법을 찾고 있는데, 나는 '생성자의 주장'을 좋아하지 않는다. – user3066027