2016-03-08 64 views
4

目前我正在重新设计一个更大的应用程序。在后端,我只想使用java而不是javascript,因此,由于其他许多原因(更简洁的代码,关注点分离等),我正在使用Jesse Gallagher的XPages Scaffolding项目(感谢他的这项工作)。XPages控制器类

我真的很喜欢这个项目的controller classes,但我有一个问题 这个架构方法:

enter image description here

控制器类有一个对一个连接到一个XPage(.xsp )。在BasicDocumentController类中,以下方法protected DominoDocument getDoc()负责获取相应的数据源(DominoDocument),但是 - 这是我的挑战 - 我在一个xpage中有多个数据源。

可能的方法:

一个)重写在MyDocumentControllergetDoc()方法(只作读出一个数据源)

b)中的两个控制器类MyDocumentControllerAMyDocumentControllerB

c)等

什么是适当的方法来处理这个要求?

在此先感谢您的任何提示!

回答

5

在这种情况下,你真的可以抛弃BasicDocumentController并使用BasicXPageController。前者主要用于表单式XPage的简单情况,但除了有一些预制方法存根对连接到文档数据源非常有用外,没有什么太神奇的地方。通过使用多个文档,您可以制作private DominoDocument getDocA() { return (DominoDocument)ExtLibUtil.resolveVariable("docA"); }和另一个等效文件。

+0

感谢您的及时答复。在我看来,在一个类中处理多个DominoDocument的一个缺点是,处理方法名称(用于方法绑定)比如save()或cancel()等并不那么容易。例如。如果我必须处理两个源代码,我必须编写两种方法:saveDocA()和saveDocB()... –

+2

这绝对取决于您想如何处理它。如果他们将通过单独的行动在逻辑上得到保存,那么是的,拥有多种方法将是最佳选择。但是,如果将它们一起保存,则'BasicXPageController'中的现有保存方法将以与股票“保存”操作按钮相同的方式保存所有数据源。 –

+1

在我的页面控制器中,我可能有多个自定义对象,并且可能会这样做 - controller.getObject1()。save()和controller.getObject2()。save()。 –