을 무시하는 방법은 확장 경고 관리자 만들었습니다 인터페이스태피스트리 AlertManager
public interface AlertManagerExt extends AlertManager {
void successCode(String messageCode, Object... args);
void infoCode(String messageCode, Object... args);
void warnCode(String messageCode, Object... args);
void errorCode(String messageCode, Object... args);
}
및 구현 내가 바인더를 통해 바인딩을 시도
public class AlertManagerExtImpl extends AlertManagerImpl implements AlertManagerExt {
private final Messages messages;
public AlertManagerExtImpl(ApplicationStateManager asm, Request request, AjaxResponseRenderer ajaxResponseRenderer,
PerthreadManager perThreadManager, Messages messages) {
super(asm, request, ajaxResponseRenderer, perThreadManager);
this.messages = messages;
}
@Override
public void successCode(String messageCode, Object... args) {
success(getMessage(messageCode, args));
}
@Override
public void infoCode(String messageCode, Object... args) {
info(getMessage(messageCode, args));
}
@Override
public void warnCode(String messageCode, Object... args) {
warn(getMessage(messageCode, args));
}
@Override
public void errorCode(String messageCode, Object... args) {
error(getMessage(messageCode, args));
}
protected String getMessage(String code, Object... args) {
if (args.length > 0) {
return messages.format(code, args);
}
return messages.get(code);
}
}
:
binder.bind(AlertManagerExt.class, AlertManagerExtImpl.class);
I 예외 :
java.lang.RuntimeException: Service interface org.apache.tapestry5.alerts.AlertManager is matched by 2 services: AlertManager, AlertManagerExtImpl. Automatic dependency resolution requires that exactly one service implement the interface.
at org.apache.tapestry5.ioc.internal.RegistryImpl.getServiceByTypeAlone(RegistryImpl.java:789)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getServiceByTypeAndMarkers(RegistryImpl.java:797)
at org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:755)
저는 AlertManager에서 모든 메서드를 복사하여 붙여 넣을 수 있으며 확장하지 않는다는 것을 알고 있습니다. 그러나 더 좋은 방법이있을 수 있습니까?
내가 필요한 것은 서비스 구현의 소스에서 꽤 분명합니다. 나는 T5 IoC에 대해 매우 잘 알고 있으며 stackoverflow에 제 질문을 게시 한 이유는 제 경우가 문서에서 다루지 않는다는 것입니다. – xl0e