Liferay 7 - 单个 class 中的多个资源命令?
Liferay 7 - Multiple resourceCommands in single class?
我即将从 Liferay 6.2 迁移到 7。我一直在 Liferay 6.2 中使用 Spring,但显然在 Liferay 7 上使用 Spring 没有使用特定组件的好处通过 classes.
配置
在我看来,每个 Liferay 7 ajax 端点都需要配置为单个命令 class,导致每个逻辑 model/controller 有几十个文件。
在 LR 6.2 上 Spring 我有一个控制器,它将每个资源端点包装到一个文件中。这在带有组件的 LR 7 上可能吗?如果 LR7 强制每个命令使用单个 class 文件,那么这是强制而不是支持单个 class 和多个方法(设计方面)?
我假设您在谈论 Ajax 端点时是在谈论 portlet 的 serveResource
阶段。
如果您采用 ResourceCommand 路线:是的,您需要为每个命名资源处理程序提供一个资源命令。但是,您不必这样做,您仍然可以在单个 portlet 中实现 class.
一个区别:
您可以控制自己的 portlet,这意味着如果您需要不同的行为,您可以轻松地更改和更新它。因此,使用单个(可能更大的)portlet class 不是问题。
另一方面,Liferay 的内置组件有时需要由其他人(例如您)更新,因此将它们分成许多较小的服务对于打算修改微小方面的 Liferay 用户来说是一件好事:他们只需要覆盖他们为更改考虑的单个 ResourceCommand。
因此,您会看到在整个 Liferay 中过度使用 ResourceCommand 模式。但是对于您自己的代码,您可以完全忽略这一点,并在单个 class 中继续使用单独的命名资源处理程序。
也就是说,一些伪代码(只写在这里,从未编译和测试)这样的 portlet:
@Component(...)
public class MyPortlet extends GenericPortlet {
public void serveResource(ResourceRequest req, ResourceResponse res) {
String name = req.getParameter("name");
// handle request for named activity
}
}
(代码编辑:抱歉,我完全混淆了 Action 和 Resource 阶段,建议 "Action" 逻辑而不是 "Resource")
还有另一种选择是放弃 portlet 实现并仅实现 Web 服务 - 通过 Liferay 的服务构建器或通过 REST。对于这些情况也有很多示例可用,但您的问题似乎是在走 portlet 路线。
我即将从 Liferay 6.2 迁移到 7。我一直在 Liferay 6.2 中使用 Spring,但显然在 Liferay 7 上使用 Spring 没有使用特定组件的好处通过 classes.
配置在我看来,每个 Liferay 7 ajax 端点都需要配置为单个命令 class,导致每个逻辑 model/controller 有几十个文件。
在 LR 6.2 上 Spring 我有一个控制器,它将每个资源端点包装到一个文件中。这在带有组件的 LR 7 上可能吗?如果 LR7 强制每个命令使用单个 class 文件,那么这是强制而不是支持单个 class 和多个方法(设计方面)?
我假设您在谈论 Ajax 端点时是在谈论 portlet 的 serveResource
阶段。
如果您采用 ResourceCommand 路线:是的,您需要为每个命名资源处理程序提供一个资源命令。但是,您不必这样做,您仍然可以在单个 portlet 中实现 class.
一个区别:
您可以控制自己的 portlet,这意味着如果您需要不同的行为,您可以轻松地更改和更新它。因此,使用单个(可能更大的)portlet class 不是问题。
另一方面,Liferay 的内置组件有时需要由其他人(例如您)更新,因此将它们分成许多较小的服务对于打算修改微小方面的 Liferay 用户来说是一件好事:他们只需要覆盖他们为更改考虑的单个 ResourceCommand。
因此,您会看到在整个 Liferay 中过度使用 ResourceCommand 模式。但是对于您自己的代码,您可以完全忽略这一点,并在单个 class 中继续使用单独的命名资源处理程序。
也就是说,一些伪代码(只写在这里,从未编译和测试)这样的 portlet:
@Component(...)
public class MyPortlet extends GenericPortlet {
public void serveResource(ResourceRequest req, ResourceResponse res) {
String name = req.getParameter("name");
// handle request for named activity
}
}
(代码编辑:抱歉,我完全混淆了 Action 和 Resource 阶段,建议 "Action" 逻辑而不是 "Resource")
还有另一种选择是放弃 portlet 实现并仅实现 Web 服务 - 通过 Liferay 的服务构建器或通过 REST。对于这些情况也有很多示例可用,但您的问题似乎是在走 portlet 路线。