我是JSP和Tiles以及Java的新手。我们目前正在使用这些重新构建我们的网站,但我很困惑何时应该将某些内容放入视图编制者vs来自控制器。
例如,我正在处理的当前页面将具有用于分页的图块,包括内容类型(Y内容类型的X)。我最初的计划是使用View Preparer来获取控制器(HashMap)发送的数据,并为分页磁贴输出一些属性,但是一位同事告诉我这应该在控制器中完成。
如果是这种情况,View Preparer有什么意义?我只是有些困惑。我检查了Tiles文档,它们非常基本/无法使用。
有人可以为View Preparer提供正确的用例吗?
答案 0 :(得分:4)
控制器用于执行业务或事务逻辑。也就是说,响应于用户动作,应用程序需要执行一个或多个动作,然后决定呈现哪个视图。这就是为什么它被称为控制器,因为它“控制”应用程序的流程。当控制器执行其工作时,必须使用户可以看到对数据的更改。但是,准备显示数据不是控制器的工作。只需确保完成必要的操作并确保数据可用。
视图(在本例中为jsp页面)将获取数据并显示它。据我所知,View Preparer可以帮助您将视图的某些方面考虑在内,以便准备者可以在几个不同的视图中完成准备工作。
因此,准备菜单的文档中的示例是一个很好的用例。菜单有时是动态的,在某种意义上它取决于系统的状态,为用户显示的是什么。我们假设您要在用户未登录时在菜单中显示登录链接,并在用户登录时从菜单中删除该链接。而不是将该逻辑编码到每个必须显示菜单的页面中可以使用ViewPreparer生成实现任何必要逻辑的菜单。然后,View Preparer可以与多个页面相关联。
将其视为操纵数据以进行查看而非业务逻辑。