2017-01-27 3 views
0

Я рефакторинг приложения XPages, который имеет пять вложенных элементов управления повторением, повторяя в основном одно и то же (панель xp:). Я подумал, ага, здесь идет специальный контроль со свойствами!Передача POJO в пользовательское свойство управления

Я зациклился на своих повторных элементах управления свойствами управляемого компонента, и я надеялся, что я мог бы установить свойство для пользовательского элемента управления, чтобы просто принять POJO, я его отправляю (а затем получить доступ к нему с помощью EL внутри пользовательский контроль).

Что мне делать? Заставить пользовательский элемент управления получать только строки, цифры и т. Д. И иметь всю логику вложенного управления за пределами? Или есть трюк?

+1

Хмм, а как же HashMap вместо целого POJO? Но: с POJO и Map вы можете получить доступ к свойствам с помощью методов (например, getValue() или getMyAwesomePropertyValue()). Свойство CC, однако, должно быть типа java.lang.Object –

+2

Заставить его принять объект. Таким образом, вы можете передать то, что когда-либо объект Java, на пользовательский элемент управления –

ответ

2

Пользовательский элемент управления может легко принять объект java, который передается через пользовательские свойства. Просто используйте тип: java.lang.Object

1

Все ответы были верны, но только Дэвид положил это как ответ - спасибо всем!

Я уже отмечал свой код здесь для кого-либо позже: я определил узел как тип java.lang.Object. Обратите внимание на синтаксис, чтобы получить объект в пользовательский элемент управления:

<xp:repeat 
    id="repeatfirstlevelnode" 
    value="#{TableOfContents.root.children}" 
    var="firstlevelnode"> 
    <xc:ccPanelNavigation 
     node="#{firstlevelnode}" 
     panelStyleWhenActive="panelLevel1 active bold" 
     panelStyleWhenInactive="panelLevel1" 
     NameNestedRepeatControl="repeatsecondlevelnodes"> 
    </xc:ccPanelNavigation> 

И когда вы находитесь в пользовательском элементе управления, вы получаете доступ к собственности с CompositeData.YourObject.

<xp:image 
      id="imgDummy" 
      url="/dummyEC.png" 
      styleClass="imageDummy"> 
      <xp:this.rendered><![CDATA[#{not compositeData.node.hasChildren}]]></xp:this.rendered> 
     </xp:image> 
Смежные вопросы