本周刚开始在Sightly工作,所以我对此很陌生。但是,在使用它时,我需要以Map的形式将数据从后端传递到前端,其中包含Page类型的键和List类型的相应值,如下面的签名所示:
public Map<Page, List<Page>> getComponentMap();
现在https://goo.gl/sylWTW上的文档指出可以通过以下方式遍历地图:
<p data-sly-repeat="${myMap}">
<span>key: ${item}</span>
<span>value: ${myMap[item]}</span>
</p>
但是,当我尝试它时,如果Keys是String Type,它就有效,但是如果我传递其他Object类型的键,就像我的情况下的'Page'类型那样。 我尝试了以下代码并用于显示密钥,但在添加第6行后抛出非法参数异常:
1 <div data-sly-use.jcomp="JavaComponent">
2 <ul data-sly-repeat.page="${jcomp.componentMap}">
3 <li>
4 <ul>
5 <li class="parent"><a href="${page.path}.html">${page.title} :</a></li>
6 <li data-sly-repeat.subpage="${jcomp.componentMap[page]}"><a href="${subpage.path}.html">${subpage.title} </a></li>
7 </ul>
8 </li>
9 </ul>
10 </div>
列表适用于任何类型的对象,因此对于我对Page的Title,Path和Children的要求,我通过使用Map的Map来实现它,其中Map包含Page的所需信息的名称。
我不知道Map是否应该是这样或者我做错了什么,但是知道原因和/或类似的更好的解决办法会有很大的帮助例。
答案 0 :(得分:0)
在第6行尝试:(不确定它是否有效):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="0dp"
android:background="@drawable/background"
tools:context=".MainActivity">
<ImageButton
android:id="@+id/bSwitchOnOff"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/off"
android:padding="0dp"
android:onClick="buttonClick"
android:contentDescription="@string/onOffButton" />
</RelativeLayout>
类似的一个但使用LIST的例子,对我有用如下:
<li data-sly-repeat.subpage="${jcomp.componentMap[page]}">
<a href="${jcomp.componentMap[page].subpage.path}.html">${jcomp.componentMap[page].subpage.title} </a></li>`
由于这变得越来越复杂,我们开始使用SlingModels。我有一个例子,如果你有兴趣: How to display values in a List of a SlingModel using Sightly