2017-01-27 9 views
0

私は基本的に同じもの(xp:パネル)を繰り返す5つのネストされたリピートコントロールを持つXPagesアプリケーションをリファクタリングしています。私は思った、aha、ここでプロパティを持つカスタムコントロールが付属しています!POJOをカスタムコントロールプロパティに渡す

私はマネージドBeanのプロパティに関するリピートコントロールをループしています。カスタムコントロールのプロパティを設定してPOJOを受け入れることができたらいいですか?カスタムコントロール)。

どうすればよいですか?カスタムコントロールが文字列、数値などのみを受け取るようにし、ネストされたコントロールロジックはすべて外部に持ちますか?またはトリックはありますか?

+1

Hmm全体のPOJOの代わりにHashMapはどうでしょうか?しかし、POJOとMapの両方で、メソッド(たとえばgetValue()やgetMyAwesomePropertyValue()など)を使ってプロパティにアクセスすることができます。 CCプロパティはjava.lang.Object型である必要があります –

+2

オブジェクトを受け入れるようにします。したがって、これまでJavaオブジェクトをカスタムコントロールに渡すことができます –

答えて

2

カスタムコントロールは、カスタムプロパティで渡されたJavaオブジェクトを簡単に受け入れることができます。タイプを使用してください:java.lang.Object

1

すべての答えは正しいですが、Davidだけが回答として答えました。

ここで私のコードは誰でも後で述べました。nodeをType 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> 
関連する問題