Xpages 从xe:navigator项获取submittedValue
为什么这个简单的导航器代码不向onItemClick事件中的sessionScope变量添加任何内容Xpages 从xe:navigator项获取submittedValue,xpages,xpages-extlib,Xpages,Xpages Extlib,为什么这个简单的导航器代码不向onItemClick事件中的sessionScope变量添加任何内容 <xe:navigator id="navigator1"> <xe:this.treeNodes> <xe:dominoViewListTreeNode filter="All.*" submitValue="#{javascript:return viewEntry.getName()}" var="viewEntry"
<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课的启发:
作为一种解决方法,我使用以下href将viewEntry.getName()作为参数传输:
<xe:this.href><![CDATA[#{javascript:"page.xsp?view="+viewEntry.getName();}]]></xe:this.href>
根据
xe:dominoViewListTreeNode中的href属性导致根本不执行服务器端事件。当单击一个节点时,它只是执行一个HTTP访问所选页面(page.xsp)。如果删除它并在服务器端代码中重定向用户,您的示例应该可以工作:
<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="#{viewEntry.name}"