2016-10-04 5 views
0

Sightlyを使用して、リンクリストタイプのカスタムオブジェクトのリストをhtmlに取得しようとしています。しかし、私は目障りにそれらを読むことができません。Javaを使用したオブジェクトのリストを使用できませんAPIおよび視覚的(Htl)

Java Beanが::サンプルコードを下に貼り付けられます

public class MiniNavBean { 

    private String fPath; 

    private String activeAttr; 

    public MiniNavBean(String fPath, String activeAttr){ 
     this.fPath = fPath; 
     this.activeAttr = activeAttr; 
    } 

    public String getFpath() { 
     return fPath; 
    } 

    public void setFpath(String fpath) { 
     this.fPath = fpath; 
    } 

    public String getActiveattr() { 
     return activeAttr; 
    } 

    public void setActiveattr(String activeattr) { 
     this.activeAttr = activeattr; 
    } 

} 

WCMUsePojo拡張Javaクラス:

public class MiniNav extends WCMUsePojo { 

    private List<MiniNavBean> navList; 

    MiniNavBean miniNav; 

    public List<MiniNavBean> getNavList() { 
     return navList; 
    } 

    public void setNavList(List<MiniNavBean> navList) { 
     this.navList = navList; 
    } 

    @Override 
    public void activate() { 
     navList = new LinkedList<MiniNavBean>(); 
     fPath = "fpaths"; 
     activeAttr = "activeattrs;"  
     miniNav = new MiniNavBean(fpath, activeattr); 
     navList.add(miniNav); 
    } 
} 

HTMLファイル(見た目):

<div data-sly-include="/apps/project/components/global.jsp"></div> 
<div data-sly-use.mininav="com.components.MiniNav" data-sly-unwrap> 
<div data-sly-list.navlist="${mininav.navList}"> 
    <li> 
    <p>${navlist.fPath}</p> 
    <p>${navlist.activeAttr}</p> 
    </li> 
</div> 

上記のコードを実行しようとすると、リンクされたリストがJavaクラスのデータでインスタンス化されているのがわかります。しかし、フロントエンドにリストの値を表示しようとしているときには、見た目にそれを読むことができません。

LinkedListはCustomObject型(MiniNavBean)であるため、このBeanについてはわからないため、読みにくいと思われます。見知らぬタグを使ってこれを修正し、データを読み取る方法はありますか?

答えて

0

例では、メンバーに値を割り当てずに、MiniNavのインスタンスを追加せず、MiniNavBeanインスタンスも追加していません。

あなたactivate()メソッドに次の行を追加:getFpath()のために、あなたはケースでnavlist.fpath

を使用する必要があります、また、JavaのgetterとHTL /見た目アクセサが適切に整列されていない、すなわち

this.navList = new LinkedList<>(); 
this.navList.add(navList); 

をすでにHTL/Sightlyからコンパイルエラーやランタイムエラーが出ていますか?

HTL/Sightlyは、一般的に、オブジェクトのプロパティを参照するためのリフレクションを使用しているため、オブジェクトの型はあまり気にしません。

+0

申し訳ありませんコピー貼り間違いです。私はすでに自分のコードに変更を加えています。ただし、リンクされたリストに格納されているカスタムオブジェクトの値を読み取っていません。リンクされたリストがString型(新しいLinkedListの場合)の値を読み取ることができます() – RRN

+0

バックエンドにコンソールエラーまたはエラーログが表示されません – RRN

+0

@RRN 'li'要素は少なくともレンダリングされますか?私はあなたのゲッター/プロパティが正しく整列していないことに気付きました。つまり、 'getFpath()'の場合は 'navlist.fpath'を使用してください。 – Vlad

0

視覚的にはJavaオブジェクトもループします。私はそれがSightlyの問題だとは思わない。あなたのゲッターが間違っているように見えます。あなたは豆を変更したくない場合は、あなたが見た目ファイルに直接ゲッターにアクセスすることができ、それが正常に動作しているかどうかを確認

public class MiniNavBean { 

    private String fPath; 

    private String activeAttr; 

    public MiniNavBean(String fPath, String activeAttr){ 
     this.fPath = fPath; 
     this.activeAttr = activeAttr; 
    } 

    public String getfPath() { 
     return fPath; 
    } 

    public void setfPath(String fPath) { 
     this.fPath = fPath; 
    } 

    public String getActiveAttr() { 
     return activeAttr; 
    } 

    public void setActiveAttr(String activeAttr) { 
     this.activeAttr = activeAttr; 
    } 
} 

下に示すように、あなたのBeanを変更します。

<div data-sly-include="/apps/project/components/global.jsp"></div> 
<div data-sly-use.mininav="com.components.MiniNav" data-sly-unwrap> 
<div data-sly-list.navlist="${mininav.navList}"> 
    <li> 
    <p>${navlist.getFpath}</p> 
    <p>${navlist.getActiveattr}</p> 
    </li> 
</div> 

EDIT:コメントをもっと見る

に基づいてあなたはクラスの外にプライベートであり、通常のパブリックgetterメソッドを使用して行われているフィールドにアクセスすることはできません説明するために。しかし、Sightlyでは、ドット演算子の後にフィールド名を使用すると、フィールドに直接アクセスするのではなく、getters/settersという名前のJava仕様に基づいて対応するgetterメソッドを呼び出します。スペックごとに、あなたのゲッターとセッターは、それがうまくいかないために、豆の中で間違っていました。

私は上記のように、あなたのbeanだけを変更することができ、あなたのコードは正常に動作します。あるいは、Beanをそのままの状態にしてSightlyコードを変更して、動作させることもできます。

+0

Thanksa lot。それは今働いた。私はそれが変数名そのもので動作することを期待していましたが、ゲッタを目に見えるように呼び出す必要があることはわかりませんでした。見た目でリンクリストを参照するために、私はゲッターを呼び出さなかったが、navListオブジェクトを直接呼び出した。しかし、なぜbeanの変数のゲッターを呼び出す必要があるのか​​分かりません。 – RRN

+0

@RRNが答えを編集して、なぜそれがそのように機能するのか説明します。 – rakhi4110

関連する問題