Xpages:无法在Navigator中获取OnClick事件来触发

时间:2015-05-08 15:26:41

标签: xpages xpages-ssjs

我正在尝试为文档数据库构建动态导航器。导航器使用重复节点正确构建(我从Per的帖子中得到了这个),我可以将页面或基本节点放在重复节点中,一切看起来都不错,但是我需要设置一个范围变量然后刷新视图元素,我无法解雇该代码。

我已经在下面列出了导航器的代码。任何帮助将不胜感激,我已经搜索了Stack Overflow并尝试手动添加事件都无济于事。

<?xml version="1.0" encoding="UTF-8"?>
<xp:view
    xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xe="http://www.ibm.com/xsp/coreex">
        <xe:navigator
            id="navigator1"
            expandable="false">
            <xe:this.treeNodes>
                <xe:repeatTreeNode
                    var="navEntry"
                    indexVar="index"
                    loaded="true">
                    <xe:this.children>
                        <xe:pageTreeNode
                            rendered="true"
                            page="/xpViewAllDocs.xsp">
                            <xe:this.label><![CDATA[#{javascript:var dbName=@DbName();
var arr = @Unique(@Trim(@DbColumn(dbName,"alldocslookup",1)))
arr[index]}]]></xe:this.label>
                        </xe:pageTreeNode>
                    </xe:this.children>
                    <xe:this.value><![CDATA[#{javascript:var dbName=@DbName();
@Elements(@Unique(@Trim(@DbColumn(dbName,"alldocslookup",1))))}]]></xe:this.value>
                </xe:repeatTreeNode>    
            </xe:this.treeNodes>
            <xp:eventHandler
                event="onItemClick"
                submit="true"
                refreshMode="complete">
                <xe:this.action><![CDATA[#{javascript:viewScope.put("key","Test");
view.postScript("alert('Client Side JavaScript executed!')");}]]></xe:this.action>
            </xp:eventHandler></xe:navigator>
        </xp:view>

编辑:

我尝试了下面的所有建议,但没有一个有效。

我可以通过简单地在重复或计算字段中放置一个链接或类似的东西来实现这一点,但是它根本不是真正看起来的导航元素。如果我可以改变一些css,使它看起来像导航我会很高兴。我用一个列表容器对它进行了一次尝试,但它无法正常工作:

enter image description here

我觉得我很亲密。我能做些什么让它看起来更像导航仪?

<?xml version="1.0" encoding="UTF-8"?>
<xp:view
    xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xe="http://www.ibm.com/xsp/coreex">
    <xe:list
        id="list1"
        styleClass="lotusMenuHeader">
        <xp:link
            role="menuItem"
            styleClass="lotusSelected"> All Documents</xp:link>
        <xp:link>Tag 1</xp:link>
        <xp:link>Tag 2</xp:link>
    </xe:list>
    <xp:panel>
        <ul
            header="lotusMenuHeader">
            <li
                class='lotusSelected'>Coffee</li>
            <li>Tea</li>
            <li>Milk</li>
        </ul>
    </xp:panel>
</xp:view>

1 个答案:

答案 0 :(得分:1)

onItemClick似乎无法与pageTreeNode一起使用。该事件根本无法呈现。

请改用basicLeafNodeonItemClick可以很好地使用它 将当前单击的值放入带有context.getSubmittedValue()的sessionScope变量中 使用context.getSubmittedValue()重定向到目标XPage。

<xe:navigator
    id="navigator1"
    expandable="false">
    <xe:this.treeNodes>
        <xe:repeatTreeNode
            var="navEntry">
            <xe:this.children>
                <xe:basicLeafNode
                    label="#{navEntry}"
                    submitValue="#{navEntry}" />
            </xe:this.children>
            <xe:this.value><![CDATA[#{javascript:var dbName=@DbName();
                @Unique(@Trim(@DbColumn(dbName,"alldocslookup",1)))}]]></xe:this.value>
        </xe:repeatTreeNode>
    </xe:this.treeNodes>
    <xp:eventHandler
            event="onItemClick"
            submit="true"
            refreshMode="complete">
            <xe:this.action><![CDATA[#{javascript:
                sessionScope.key = context.getSubmittedValue();
                context.redirectToPage("xpViewAllDocs.xsp")}]]></xe:this.action>
        </xp:eventHandler>
</xe:navigator>