我正在尝试使用 LifeRay 6.1 开发一个基本的 portlet。我精通各种 MVC 实现,但我发现 Liferay / java portlet 有点令人困惑——尤其是执行管道。
对于我使用过的大多数 MVC 框架,前提是简单的请求 > 路由器 > 控制器 > 视图。视图选择通常基于控制器/动作命名约定,随请求传入的参数或手动加载到控制器动作中。
使用 LifeRay MVCPortlet 它不能像这样工作;至少可以生成两种类型的 URL - 渲染 URL 和操作 URL。
渲染 URL 似乎完全绕过了我认为的控制器——MVCPortlet 的子类。似乎这些 url 相对容易生成并且请求加载了预期的视图,如果您可以调用它,考虑到所有意图和目的,它完全绕过控制器并且与模型无关。
<portlet:renderURL var="badminURL"><portlet:param name="mvcPath" value="/views/edit.jsp" /></portlet:renderURL>
动作 URL 通过控制器,调用动作,然后使用默认视图呈现 portlet,而不管我作为 mvc 路径提供什么。
<portlet:actionURL var="adminURL" name="editSlide"><portlet:param name="mvcPath" value="/views/edit.jsp" /></portlet:actionURL>
阅读类树,我可以看到一个属性用于定义根据 portlet 模式使用的视图。IE
this.viewTemplate = "/views/edit.jsp";
this.editTemplate = "/views/edit.jsp";
在调用 init() 之后再次设置它似乎只有在不通过 actionURL 访问时才有效。
所以我想我的问题是非常基本的,如何选择视图以及如何在通过 actionURL 时选择要使用的视图。此外,任何关于执行管道的大纲都会非常有帮助