我在extlib中使用动态内容控件。这个控件的一个很好的特性就是它自动从url中的documentId连接数据源,如下所示:
" ...#含量= DOC&安培;行动=使用openDocument&安培; documentId = C0282D5F7AF66787C1257ACF0028FD3A"
如果应用程序中存在unid,它会将数据源连接到它。 (除非设置了ignoreRequestParameters)
我的问题是我使用自己的软删除功能,我在文档上设置字段,如果某些用户删除它,它将从基于此字段的视图中排除。
但dyn内容控件并不关心文档是否在视图中,如果文档存在于应用程序中,它将连接到数据源
因此,如果文档被软删除,我需要找到一种不加载数据源并将用户重定向到另一个地方的方法。可能的?
请注意:unid显示在url哈希后面,因此无法使用SSJS访问。
//托马斯
答案 0 :(得分:3)
您可以使用 ExtLibUtil 访问documentId。然后,您可以在 dynamicContent 组件的 beforeContentLoad 事件中重定向用户:
<xe:this.beforeContentLoad>
<![CDATA[#{javascript:
var noteId = com.ibm.xsp.extlib.util.ExtLibUtil.readParameter(facesContext,"documentId");
if( noteId === "ABCD" ){
facesContext.getExternalContext().redirect("http://google.de");
}
}]]>
</xe:this.beforeContentLoad>
[而不是使用硬编码的 noteId ,你必须为你的softdelete字段进行查找]
答案 1 :(得分:2)
您可以检查其中一个XPage事件(例如beforePageLoad
)中的特定“软删除”字段,然后使用context.redirectToPage("pagename")
将用户重定向到另一个页面吗?