如何防止dojo javascript从render = false的自定义控件呈现?

时间:2012-03-27 17:35:12

标签: custom-controls xpages

这个问题的标题可能看起来有点令人困惑,但这就是发生在我身上的事情。

首先,我使用Notes / Domino 8.5.3和UP1。

我有一个Xpage,里面有编辑模式自定义控件。在自定义控件中是使用digit.forms的各种元素。我试图将自定义控件设置为仅在编辑模式下呈现,但即使它处于读取模式,某些dojo元素仍在呈现。为了测试这个,我甚至为控件设置了render = false。

<xc:ccEditDocument rendered="false"></xc:ccEditDocument>

当我将XPage的源代码与自定义控件进行比较时,如果渲染= false,则在没有自定义控件的情况下,VS的XP源代码将会遇到以下差异:

<script type=”text/javascript” src=”/xsp/.ibmxspres/dojoroot-1.6.1/ibm/xsp/widget/layout/layers/xspClientDojoUI.js”></script>
<script type=”text/javascript”>dojo.require(’dijit.form.Form’)</script>

enctype=”multipart/form-data” dojoType=”dijit.form.Form”

这实际上是因为IE8和iFRAME呈现PDF而导致我的问题(它当然适用于所有其他真实浏览器)。

有没有办法让TRULY让自定义控件不呈现dojo表单元素?

谢谢!

更新

jjtbsomhorst得到了修复!这是为自定义控件的加载属性添加条件。

<xc:ccEditDocument rendered="#{javascript:document1.isEditable()}"
loaded="${javascript:document1.isEditable()}">
</xc:ccEditDocument>

谢谢!

2 个答案:

答案 0 :(得分:4)

使用loaded属性并使用viewscope变量切换元素的加载。使用url参数填充此viewscope var。因为您更改了网址并进行了完全刷新,所以会重新评估已加载的属性。我认为除非加载了dojotype,否则这应该导致dojo不呈现

答案 1 :(得分:2)

您需要在自定义控件本身中设置dojo模块的呈现属性。这将在运行时确定是否将模块添加到要呈现的资源列表中。