Я хочу автоматически установить атрибуты меток для компонентов UIInput на моих страницах для уже введенных компонентов HtmlOutputLabel, как это делал разработчик PrimeFaces: http://cagataycivici.wordpress.com/2011/02/11/label-provider-for-jsf-input-components/
Только он сделал это с помощью системных событий, функция доступна только в JSF-2.0, а мое приложение в JSF 1.2.
Возможно ли сделать это с помощью JSF-1.2, возможно, с Phase Listener?
Какие бы были недостатки?
Заранее спасибо!
ОБНОВЛЕНИЕ: Вот как выглядит моя попытка прослушивания фазы до сих пор:
@Override
public void beforePhase(PhaseEvent event) {
System.out.println("REGISTERING Label Provider");
FacesContext context = event.getFacesContext();
List<UIComponent> components = context.getViewRoot().getChildren();
for (UIComponent uiComponent : components) {
if (uiComponent instanceof HtmlOutputLabel) {
HtmlOutputLabel outputLabel = (HtmlOutputLabel) uiComponent;
System.out.println("CONFIGURING LABEL: " + outputLabel.getId());
UIComponent target = outputLabel.findComponent(outputLabel
.getFor());
if (target != null) {
target.getAttributes().put("label", outputLabel.getValue());
}
}
}
}
@Override
public PhaseId getPhaseId() {
// Only listen during the render response phase.
return PhaseId.RENDER_RESPONSE;
}
Когда я получаю доступ к представлению, оно никогда не печатает раздел «НАСТРОЙКА ЭТИКЕТКИ». Каким будет правильный тест, чтобы проверить, является ли uiComponent HtmlOutputLabel?
Или что я делаю не так?