xpages - Xpage, createForm=false 禁用链接上的 SSJS 事件?

标签 xpages xpages-ssjs

我问这个只是为了在这里澄清:我不小心将 createForm 属性设置为 false。然后我期望一个链接事件应该打开另一个页面,但不再起作用。 这是 SSJS 事件的预期行为吗?当您禁用表单创建时在链接中?

最佳答案

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

XPages 运行时支持表单组件,但它不包含在组件选项板中(并且无法通过设计器首选项添加),因此将其添加到页面的唯一方法是直接编辑源 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>

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

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

因此,在许多用例中,实际上最好在 XPage 上使用一个或多个表单组件...只需记住,所有数据和事件都必须位于表单内 - 无论是通常围绕所有内容的默认表单,或手动包含的表单组件 - 并且该表单不能嵌套。您可以根据需要添加任意数量的表单组件,但它们必须是同级组件。任何形式都不能包含另一种形式。

关于xpages - Xpage, createForm=false 禁用链接上的 SSJS 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15857479/

相关文章:

xpages 根据组合框值隐藏/显示字段

java - 如何从 SSJS XPage 调用 jar 的类

xpages - IBM Domino 和 Java 8

css - 带省略号的多行文本在 FF 和 IE 中不起作用,但在 Chrome 中不起作用

Xpages如何获取/创建这个计算模块

xpages - bluemix xpages 性能和架构

themes - 使用移动主题 XPage 时如何提供桌面或移动 XPage

java - 将带有 JsonJavaObject 的 arraylist 传递到 SSJS 的方法中

XPage - 从配置文件中获取值