为了不必重复一些验证,例如,谁可以在worlflow中看到文档的某个状态的按钮,我正在使用会话,范围和会话变量来存储用户角色和应用程序变量存储与每个区域相关的状态。 我正在评估从性能和构建角度来看,实现托管bean,返回用户角色以及每个参与工作流区域的可能状态是否会更好。它实际上是最好的结构吗?你怎么看?我在java方面没有太多经验。我如何在java中构造结构,几种方法,一种用于角色,另一种用于与命名相关方法的区域相关联的状态集?您可以在数组中返回此方法的结果,或者有更好的返回结构。
非常感谢!
答案 0 :(得分:2)
我最好的建议是采用pageController方法。然后它更像真正的MVC。这已经多次在NotesIn9截屏视频中讨论,但基本上你有一个绑定到XPage的java对象。实际上它是一个包含所有页面逻辑的viewScoped bean。然后你可以有像isGroupMember(),hasRole()等方法,并在pageInit上计算。在我看来,在sessionScope中很少需要保留它。例如,我在pageController中有这个:
public boolean isGroupMember(String groupName) {
return JSFUtil.getXSPContext().getUser().getGroups().contains(groupName);
}
这样每个页面都可以使用。但我不需要将该代码段复制到每个页面控制器上。在Java中,您可以让页面控制器扩展更通用的类。所以我有一个" base.pageController"类。所有特定页面控制器都扩展了它。因此,这是一个GroupMember()代码进入基础,然后它可以在每个XPage上使用。通过这种方式,您可以使用这样的通用函数,然后保存更具体的功能,仅适用于单个页面。
您还可以使用hasRole()函数等...
建议您查看此视频:http://www.notesin9.com/2016/08/25/notesin9-196-no-dependency-page-controllers/
对于这样的问题,我建议你只使用xpages标签。添加像javabeans这样的其他人可以让那些对XPage和XPage一无所知的人是一个独特的野兽,外人有时会引起一些混乱。