我有一个 XPage,可用于根据用户的角色进行编辑或阅读。现在我需要实现这个功能。解决方案非常简单 - 只需删除添加、编辑和其他 HTML 元素。问题是我只能在页面加载时执行 SSJS 代码,但不能执行 CSJS。当我尝试document.
在 SSJS 中这样做时,它给了我一个可预测的异常 -document
没有被识别。无论如何,我如何在页面加载时执行它?
问问题
105 次
2 回答
4
页面加载的顺序是(XPages 事件以粗体显示):
- XPage 上所有组件的服务器端映射和相关的自定义控件被加载到内存中
- beforePageLoad:开发人员的服务器端代码针对这些组件运行
- 服务器端组件根据计算或与后端文档的绑定进行迭代和更新
- afterPageLoad:开发人员的服务器端代码针对这些组件运行
- beforeRenderResponse:开发人员的服务器端代码针对这些组件运行(使用此事件意味着它也在任何部分刷新期间被处理)
- 渲染响应迭代组件并计算出要传递给浏览器的 HTML
- afterRenderResponse:开发人员的服务器端代码针对组件运行
如您所见,SSJS 仅针对组件的服务器端映射运行,而不针对客户端 DOM。如果你想修改它,你可以使用 onClientLoad 但我认为它不会在部分刷新后运行。因此,您对 DOM 的修改可能会在部分刷新后丢失(您需要检查)。如果您希望对 DOM 元素的更改保持不变,有两种选择:
- 使用
dojo.behavior
. jQuery 可能有相应的调用可以使用。 - 用 Java 编写一个渲染器来更改为特定类型的组件输出的 HTML。
听起来您的优势在于客户端,因此前者可能是最佳选择。
于 2018-02-12T09:51:05.773 回答