ApplicationLayout控件(extlib)中的TitleBar选项卡生成无效代码

时间:2012-02-15 12:57:27

标签: xpages

我正在使用ApplicationLayout控件(8.5.3 UP1)并添加了基本节点以显示为选项卡。我希望选项卡运行JavaScript以在单击时设置sessionScope变量。我在onClick中有sessionScope.put但单击选项卡时未正确设置变量。

更糟糕的是,当我查看页面的来源时,这就是我在标签中看到的内容:

<ul id="view:_id1:_id2:applicationLayout1_tb" class="lotusTabs lotusTabsIndented">

 <li class="lotusTabs li">
  <div>
   <a style="text-decoration:none">Ft. Pierce</a>
  </div>
 </li>

 <li class="lotusTabs li">
  <div>
   <a href="javascript:;" onclick="javascript:Ft. Pierce" style="text-decoration:none">Naperville</a>
  </div>
 </li>

 <li class="lotusTabs li">
  <div>
   <a href="javascript:;" onclick="javascript:Naperville" style="text-decoration:none">Chicago</a>
  </div>
 </li>
</ul>

注意第一个li没有href或onclick代码,而另外两个li条目的href和onclick参数看起来不正确(并且onclick与标签不匹配)。

从我在控件中看到的情况来看,这应该可行。如果节点的href属性中没有任何内容,它应该执行onClick代码。我很欣赏任何有关这项工作的想法或想法。感谢。

1 个答案:

答案 0 :(得分:4)

basicTreeNode上的onClick事件用于运行clientSide javascript。您将无法放置任何SSJS,例如您所描述的sessionScope.put。

要执行您需要的操作,您需要使用basicTreeNode的submitValue属性,然后添加脚本以将sessionScope设置为applicationLayout控件的onItemClick事件。

<xe:applicationLayout id="applicationLayout1">
        <xe:this.configuration>
            <xe:oneuiApplication>
                <xe:this.titleBarTabs>
                    <xe:basicLeafNode label="Tab 1" submitValue="tab1" />
                    <xe:basicLeafNode label="Tab 2" submitValue="tab2" />
                    <xe:basicLeafNode label="Tab 3" submitValue="tab3" />
                </xe:this.titleBarTabs>
            </xe:oneuiApplication>
        </xe:this.configuration>
        <xp:eventHandler event="onItemClick" submit="true" refreshMode="complete">
            <xe:this.action><![CDATA[#{javascript:sessionScope.put("varName",context.getSubmittedValue())}]]></xe:this.action>
        </xp:eventHandler>
    </xe:applicationLayout>