使dynamicContent控件动态化

时间:2014-07-23 18:12:14

标签: xpages xpages-extlib

我很难让dynamicContent控件按照我希望的方式工作。我在pasteBin中找到了这段代码,我认为它可能就是我需要的东西,但我想在实现它之前了解它的作用。

<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
                xmlns:xe="http://www.ibm.com/xsp/coreex">
         <xp:button value="Switch!" id="switchButton">
                <xp:eventHandler event="onclick" submit="true"
                        refreshMode="partial" refreshId="dynamicCustomControl">
                        <xp:this.action><![CDATA[#{javascript:viewScope.controlName = 'cc_test2.xsp';
       getComponent('dynamicCustomControl').show(null)}]]></xp:this.action>
                </xp:eventHandler></xp:button>
         <xe:dynamicContent id="dynamicCustomControl">
                        <xp:include id="customControlInluder">
                                <xp:this.pageName>
     <![CDATA[${javascript:viewScope.controlName||"cc_test1.xsp"}]]>
     </xp:this.pageName>
                        </xp:include>
         </xe:dynamicContent>
</xp:view>

特别是我不理解这一行的语法:

<![CDATA[${javascript:viewScope.controlName||"cc_test1.xsp"}]]>

我更喜欢使用viewScope.get(“controlName”)而不是简短的viewScope.controlName,但我不明白||的意义在这行代码中。

也是

<xp:include id="customControlInluder>

可能是一个无关紧要的错字。

这个过程看起来相当简单,看起来它会为我完成这项工作。在走这条路之前,我只想确保理解它。

编辑和更新---

这个非常简短的代码片段可能只是最好的秘密之一。我刚刚完成了它,并且使用dynamicCustomControl显示的每个自定义控件都包含一个dynamicContent控件。因此能够非常好地在dynamicContent中嵌入dynamicContent。到目前为止,我从未真正能够正常工作。现在它的工作非常顺利,而且操作简便。弄乱。感谢您的评论和帮助。

2 个答案:

答案 0 :(得分:4)

JavaScript代码viewScope.controlName||"cc_test1.xsp"返回viewScope.controlName的值,如果它不是

  • 0
  • 未定义
  • 的NaN
  • &#34;&#34;或者&#39;&#39; (=空字符串)

否则返回&#34; cc_test1.xsp&#34;。您可以找到详细解释here

这是

的简短方法
viewScope.controlName ? viewScope.controlName : "cc_test1.xsp"

if (viewScope.controlName) {viewScope.controlName} else {"cc_test1.xsp"}

<xp:include id="customControlInluder">中的ID未在代码中使用,因此它的调用方式并不重要,尽管&#34; customControlIncluder&#34;听起来会好得多。

我总是使用短版本作为范围变量来获取和设置值,并且尚未遇到问题。

答案 1 :(得分:1)

Bill,认为它只是说“使用viewscope控件名称,如果为null则使用cc_test1.xsp”。如果第一种情况为真,则不评估第二种情况。

JavaScript OR (||) variable assignment explanation