我正在构建一个自定义控件,用作应用程序的视图导航器(经典的OneUI样式)。首先:这是一个基于8.5.3的项目,遗憾的是没有办法使用Extlib的东西或其他扩展/插件。因此,我们必须使用8.5.3中的“开箱即用”来构建所有棘手的东西。
我想使用包含<xp:link>
控件的重复控件来构建我的导航器。 Datasource可以是一个javascript对象数组,其中每个对象看起来像这样:
var navEntry = {"entryLabel" : "label-of-link",
"entryTarget" : "target-url-of-link",
"entryStyle" : "style-to-emphasize-selected-link"}
然后,每个数组元素将描述单个导航器条目。 由于导航器将用于所有可能的“DominoView”Xpages,因此在Xpage级别构建JS对象数组然后将该信息传递到自定义控件中是有意义的。
我知道有多种方法可以做到这一点,其中一种可能是“自定义控件属性”。如果有办法传递我的JS对象数组。
(希望我能说明我在这里要做的事情......)
答案 0 :(得分:3)
该对象真的对我来说就像是一个HashMap。如果使用java.util.HashMap类型,我应该能够通过自定义属性将其传递给自定义控件。我确定你需要输入它。我使用java.lang.Object传递了自定义对象。
答案 1 :(得分:1)
自定义控件将在Page Load事件期间加载,通常属性必须在此时可用。如果他们在渲染响应阶段重新加载,那就太晚了。因此,您的SSJS对象需要在页面加载时进行计算。
要使用重复控件的内容,您需要设置repeatControls = true,否则重复仅在渲染响应期间构建。在此之前,它只是一组没有数据的控件。但是,我很确定repeatControls =&#34; true&#34;表示您只获得您定义的行数。您无法通过寻呼机进行更改。
答案 2 :(得分:0)
您可以手动定义自定义属性的类型。对于标准SSJS对象,您使用&#34; com.ibm.jscript.std.ObjectObject &#34;,对于您使用的SSJS数组&#34; com.ibm.jscript .std.ArrayObject 强>&#34;等作为自定义属性的编辑器,我设置了字符串编辑器(&#34;字符串值&#34;)。