xpages - 为什么 xPage 处理我的评论就好像它们没有处理一样

标签 xpages

我在 XPage 中遇到了奇怪的行为,并带有注释代码。

我有一个文本字段,里面有很多代码,在我遇到这个问题的地方输出 html。 在开发过程中,我在某些字段和其他字段上遇到了很多麻烦,因此我决定 - 为了更好地了解该字段正在做什么 - 将代码从麻烦字段复制到我的文本字段内的注释中,以便让其他代码在我的视线中。但随后 xPage 开始表现得很奇怪,直到我发现了问题。

下面的代码是导致我的问题的一个示例,它有两个文本字段,一个设置范围变量,还有一个注释设置相同的变量但已注释,另一个显示范围变量。我以为这会在第二个文本框中输出“我在哪里”,但我得到的是“呼呼我在这里”。

        <xp:text escape="true" id="computedField7">
            <xp:this.value><![CDATA[#{javascript://
                sessionScope.put("findme","where i am");
                /* #{javascript:sessionScope.put("findme","HuHu I am here!");} */
                return sessionScope.findme;}]]></xp:this.value>
        </xp:text>
        <xp:br></xp:br>
        <xp:text escape="true" id="computedField6"
            value="#{javascript:return sessionScope.findme;}">
        </xp:text>

在我遇到这个问题的原始代码中,我想注释掉旧的 #{} el 以使用 JavaScript,但将 el 保留在代码中间的注释中..结果相同。看来如果您在评论中使用 #{ 或 ${ ,它总是会被计算!

在注释 9 中修复了这个问题。我目前使用的是 8.5.3。

更新: 需要注意的是:使用 dojoAttribute queryExpr 时要小心,因为查询看起来像 SSJS "${0}" 并且也会被解释为 SSJS。我现在用这个:

<xe:this.queryExpr><![CDATA[${javascript:"*$\{0}*";}]]></xe:this.queryExpr>

使其发挥作用。感谢Paul Stephen Withers对于带有 \{.

的提示

最佳答案

这是一个有趣的错误。

这是由 JavaScript 解释器的预处理器功能引起的。通常,您可以在 CSJS 代码中编写 #{javascript:...} 来替换部分代码放入呈现页面之前。

就你而言,它是 SSJS。同样,解释器替换了 SSJS 代码中的 #{javascript:...} 并认为工作已经完成。这样您就可以看到渲染页面上的代码而不是执行代码的结果。

rendered page

作为解决方法,只需从 /* #{javascript... 中删除 # 即可,它将按预期工作。

关于xpages - 为什么 xPage 处理我的评论就好像它们没有处理一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19679079/

相关文章:

view - 用于打开文档 View 的 Xpages 链接

xpages - 计算 XPage View 中的条目

twitter-bootstrap-3 - 使用 bootsrapv3.0.0 主题时,页面无法在 IE 11 中正确呈现

如果您有太多文档,XPages typeAhead 不起作用

XPage:转换现有 Notes 文档的内容(部分和选项卡式表格)

javascript - 将重复控件绑定(bind)到 session 或 View 范围变量

css - 如何对齐数据表列中的文本/控件?

ios - xpages如何检测IOS屏幕旋转

javascript - XPages 中的列表功能

javascript - 具有多个值的代码关联 javascript 数组