Liferay 7 - 单个类中的多个resourceCommands?

时间:2017-07-21 05:48:24

标签: liferay liferay-7

我即将从Liferay 6.2迁移到7.我在Liferay 6.2中一直使用Spring,但显然使用Spring on 7并没有通过类使用组件特定配置的好处。

在我看来,每个Liferay 7 ajax端点都需要配置为单个命令类,每个逻辑模型/控制器会导致数十个文件。

在LR 6.2 Spring上我有单个控制器,它将每个资源端点包装到单个文件中。 LR 7上是否可以使用组件?如果LR7强制每个命令使用单个类文件,那么这是强制的,而不是支持多个方法的单个类(设计方面)?

1 个答案:

答案 0 :(得分:0)

当您谈论Ajax端点时,我假设您正在讨论portlet的serveResource阶段。

如果你使用ResourceCommand路由:是的,你需要为每个命名的资源处理程序提供一个资源命令。但是,您不必这样,您仍然可以在单个portlet类中实现。

一个区别:

您可以控制自己的portlet,这意味着如果您需要不同的行为,您可以轻松地更改和更新它。因此,使用单个(可能更大的)portlet类并不是一个问题。

另一方面,Liferay的内置组件有时需要由其他人(例如你)更新,因此将它们分成许多小型服务对于打算修改微小方面的Liferay用户来说是一件好事:他们只需要覆盖他们为改变而考虑的单个ResourceCommand。

因此,您会在Liferay上看到过度使用ResourceCommand模式。但是您可以完全忽略这个用于您自己的代码,并在单个类中继续使用单个命名的资源处理程序。

就是说,这样一个portlet的一些伪代码(只写在这里,从未编译和测试过):

@Component(...)
public class MyPortlet extends GenericPortlet {
    public void serveResource(ResourceRequest req, ResourceResponse res) {
      String name = req.getParameter("name");
      // handle request for named activity
    }
}

(编辑代码:道歉,我完全混淆了行动和资源阶段,而不是建议“行动”逻辑而不是“资源”)

另一种方法是放弃portlet实现,只需通过Liferay的Service Builder或REST实现Web服务。这些案例也有很多可用的样本,但你的问题似乎就像你要进入portlet路线一样。