Xpage,createForm = false会禁用链接上的SSJS事件吗?

Oli*_*sse 2 xpages xpages-ssjs

我在这里要清楚这一点:我意外地将createForm属性设置为false.然后,我期望一个链接事件应该打开另一个页面,只是不再运行.这是SSJS事件的预期行为,例如在禁用表单创建时的链接中吗?

Tim*_*ony 8

正如Per提到的,所有事件都需要一个表单:如果它们是完全刷新的,那么页面需要一个表单来发布以触发重定向; 如果它们是部分刷新,则表单确定AJAX POST的内容.

XPage运行时包括对表单组件的支持,但它不包含在组件面板中(并且无法通过Designer首选项添加),因此将其添加到页面的唯一方法是直接编辑源XML.例如:

<xp:form>
    <xp:link id="exampleLink" text="Example Text">
        <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:// event code}]]></xp:this.action>
        </xp:eventHandler>
    </xp:link>
</xp:form>
Run Code Online (Sandbox Code Playgroud)

这个组件有用(至少)有两个原因:

  1. 它可以提高性能.如果页面包含功能不同的不同区域 - 换句话说,页面的一个部分中的事件不需要知道页面的任何其他部分中的数据 - 然后将每个部分包装在单独的表单组件中导致每个事件仅发布包含在与触发事件的组件相同的表单内的数据.你的问题表明,打破当你设置链接createFormfalse应该将用户导航到另一个页面; 因此,此事件可能不需要知道任何字段值,因为用户无论如何都要离开当前页面.如果这是真的,请以自己的形式包装此链接,并在单独的表单中包含任何字段,并且链接将稍微快速执行,因为浏览器不必发布任何字段数据...只是链接本身的标识符.
  2. 它可以提供风格灵活性.对于开发人员来说,与不熟悉Domino的设计人员一起接收与实际最终用户要求不同的预定CSS是常见的 - 例如,如果网站设计是外包的,或者必须遵守企业风格指南.当设计师做出某些假设时,这通常会成为紧张的根源,乍一看,这些假设与Domino生成的标记不兼容.其中一个最常见的例子是当网站包含搜索功能时,因为大多数Web开发人员将拥有一个用于搜索的表单和一个用于任何其他字段的单独的兄弟表单.当设计人员或开发人员必须修改设计人员已经开发的样式表以考虑围绕所有内容的单个表单标记时,这会增加项目的成本.简而言之,抑制默认表单元素并在需要时明确指定表单组件使得更容易遵守外部强加的样式指南.

所以有许多用例,在XPage上使用一个或多个表单组件实际上是更好的...只要记住所有数据和事件必须在表单内 - 无论是通常包含所有内容的默认表单,还是手动包含表单组件 - 并且表单不能嵌套.您可以根据需要添加任意数量的表单组件,但它们必须是兄弟姐妹.任何表格都不能包含其他表格.