Я хочу использовать компонент backing как слой для доступа к атрибутам моего составного компонента (как определено в его интерфейсе). То, что я хотел достичь, это прочитать атрибуты моего компонента с помощью моего компонента компонента backing, где я возвращаю значение свойства предоставленного атрибута.JSF Backing Component - Composite Component - Execution Execution
public String getName() {
if (this.name == null) {
this.name = getAttributes().get("name");
}
return this.name;
}
Но при установке нового значения, например. через поле ввода я хотел сохранить значение только в моих свойствах бэканга, не обновляя значения исходных свойств, переданных в качестве атрибутных аргументов моему составному компоненту.
public void setName(final String name) {
this.name = name;
}
Моя проблема теперь, когда добытчиком моего защитного компонента называется первый раз или на каком-то раннем этапе своей жизни код геттер, как показано выше, приводит к исключению StackOverflow как getAttributes.get (» name ") вызывает getter моего компонента backing (сам), вместо этого извлекает свойство/атрибут, предоставленный моему составному компоненту. Fun part использует простой getter, который возвращает this.name вместо вызова getAttributes(). Я могу установить там точку останова, а затем вызвать getAttributes.get («имя») (через отладчик), а не переполнение/вызов собственного получателя но вместо этого возвращается атрибут, предоставленный моему составному компоненту.
Я думаю, что это как-то связано с муфтой между компонентом подложки и составным компонентом. То, что когда получатель получает вызов в первый раз, никакой связи между ними не предоставляется, и поэтому вызов getAttributes.get («имя») приводит к вызову получателя моего компонента поддержки, тогда как позже вызов не вызывает его собственный getter, а вместо этого извлекает атрибут, предоставленный моему компоненту comp.
У кого-нибудь есть идеи, как решить эту проблему? Thnx заранее.
Как насчет кода GetAttributes(), вы могли бы поделиться? Является ли он одним и тем же бэкбоном? – cheffe
@cheffe: он просто унаследован от класса 'UIComponent'. xstring, я взял на себя смелость удалить теги '[java]' и '[ejb]' из вопроса, поскольку эта проблема не связана с этим вообще и только привлекает бесполезные комментарии, как описано выше. – BalusC
Хорошо, спасибо BalsuC. – xstring