2012-04-16 14 views
1

この簡単なナビゲータコードは、なぜonItemClickイベントのsessionScope varに何も追加しませんか?代わりに、次のHREFを使用してこの問題を回避私はパラメータとしてviewEntry.getName()を転送していますとしてhttp://xpages101.net/xpages101/XPages101.nsf/0/4DB7580AC6931682802579A7004E74E7xe:navigatorアイテムからsubmittedValueを取得する

<xe:navigator id="navigator1">         
    <xe:this.treeNodes> 
     <xe:dominoViewListTreeNode filter="All.*" submitValue="#{javascript:return viewEntry.getName()}" var="viewEntry" href="page.xsp"> 
      <xe:this.databaseName><![CDATA[#{javascript:database.getServer() + "!!" + "path//db.nsf"}]]></xe:this.databaseName> 
     </xe:dominoViewListTreeNode> 
    </xe:this.treeNodes> 
                    
    <xp:eventHandler event="onItemClick" submit="true" refreshMode="complete"> 
     <xp:this.action><![CDATA[#{javascript:sessionScope.clickedView = context.getSubmittedValue()}]]></xp:this.action> 
    </xp:eventHandler> 
</xe:navigator> 

コードが重くXPages101レッスン71に触発さ

<xe:this.href><![CDATA[#{javascript:"page.xsp?view="+viewEntry.getName();}]]></xe:this.href> 

答えて

3

Per、

hrefxe:dominoViewLiの属性stTreeNodeは、サーバーサイドイベントがまったく実行されないようにします。ノードをクリックすると、選択したページ(page.xsp)に対してHTTP GETが実行されます。あなたはそれを削除し、サーバーサイドコードでユーザーをリダイレクトする場合は、あなたのサンプルが動作するはずです:

<xe:navigator id="navigator1">   
    <xe:this.treeNodes> 
    <xe:dominoViewListTreeNode filter="All.*" submitValue="#{javascript:return viewEntry.getName()}" var="viewEntry"> 
     <xe:this.databaseName><![CDATA[#{javascript:database.getServer() + "!!" + "path//db.nsf"}]]></xe:this.databaseName> 
    </xe:dominoViewListTreeNode> 
    </xe:this.treeNodes> 

    <xp:eventHandler event="onItemClick" submit="true" refreshMode="complete"> 
    <xp:this.action> 
     <![CDATA[#{javascript:sessionScope.clickedView = context.getSubmittedValue(); 
    context.redirectToPage("page");}]]> 
    </xp:this.action> 
    </xp:eventHandler> 
</xe:navigator> 

もう一つのヒント:あなたがにsubmitValue属性の式を短縮することができ式言語を使用して:

submitValue="#{viewEntry.name}" 
+0

ああ、のコース!クライアント側は常にサーバー側よりも優先されます。ありがとう、マーク。私は後でテストして受け入れます –

関連する問題