JSF2 Locale обработчик - PullRequest
       3

JSF2 Locale обработчик

1 голос
/ 10 июня 2011

Я обновляю свое приложение до JSF 2 с JSF 1.2.

Я столкнулся со следующей проблемой. У меня был обработчик локали, который обрабатывал локаль, используемую при проверке URL-адреса запроса.

@Configurable
public class MutationViewHandler extends FaceletViewHandler {

@Autowired
private LanguageMutationServiceIface mutationService;

public MutationViewHandler(ViewHandler parent) {
    super(parent);
}

@Override
public Locale calculateLocale(FacesContext context) {
    String mutation = FacesUtil.getRequestParameter("mutation");
    if (mutation == null) {
        return new Locale(mutationService.getDefaultLanguageMutation().getName());
    } else {
        return new Locale(mutation);
    }
}
}

Но в JSF 2 этот класс устарел и вызывает ошибку (NPE) при использовании в MyFaces. Я пытался реализовать это с помощью простого ViewHandler, но это заставляет меня реализовывать много методов, где я хочу использовать поведение по умолчанию.

Заранее спасибо за помощь.

1 Ответ

2 голосов
/ 10 июня 2011

Вам нужно продлить ViewHandlerWrapper.

Предоставляет простую реализацию ViewHandler, которая может быть разделена на подклассы разработчиками, желающими обеспечить специализированное поведение для существующего экземпляра ViewHandler. Реализация по умолчанию всех методов - это вызов обернутого ViewHandler.

Использование: расширить этот класс и переопределить getWrapped(), чтобы вернуть экземпляр, который мы переносим.

Итак, вы можете просто сделать

public class MyViewHandler extends ViewHandlerWrapper {

    private ViewHandler wrapped;

    public MyViewHandler(ViewHandler wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public ViewHandler getWrapped() {
        return wrapped;
    }

    @Override
    public Locale calculateLocale(FacesContext context) {
        // Do your thing here.
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...