我已经使用 Liferay 大约 2 年了,用于内部应用程序。在我们第一次发布之前,我们在整个开发周期中多次进行了相同的讨论。我们不得不和Liferay打了几次,有时是因为我们自己缺乏知识,有时是因为portlet环境,有时是因为Liferay。
如果您想要从门户获得的多个应用程序的布局选项,那么您当然应该使用 Liferay。如果您正在编写单个应用程序,那么我可能不会使用 Liferay。我认为一些 Liferay 和一些不是 Liferay 的混合是迄今为止最糟糕的选择。
我们可能没有充分利用 Liferay 的功能,但如果这是您的第一个 Liferay 应用程序,那么由于学习曲线,您很可能也不会。我们最初希望为应用程序的不同方面提供许多不同的 portlet,但由于在开发过程中(JSR-286 之前)缺乏良好的 portlet 间通信机制,我们最终编写了一个应用程序。既然我们最终上了那条船,我希望我们没有 Liferay,因为我们真正使用的只是一些用户管理功能。
我们使用 JSF 和 facelets(对我们来说都是新技术,所以痛苦可能是自找的),虽然我们已经做得更好了,但似乎我们必须跳过一些障碍才能让它工作在 portlet 中正确;在常规 Web 应用程序环境中不会发生的事情。对于许多框架来说,portlet 支持似乎是事后才想到的。这显然不是 Liferay 特有的,它只是在 portlet 环境中工作的副产品。
在使用 Spring MVC、Struts、Faces、Wicket 等的 web 应用程序中,您将对所有内容有更多的控制权,但也需要负责实现更多的东西。
在 portlet 中,您将受到 JSR-168 和/或 JSR-286 条款的约束。门户容器将为您提供一些功能,例如用户身份验证,但是 IMO,用于用户身份验证的整个门户太重了。我看到门户的强大之处在于允许用户自定义他们对多个应用程序的视图,而不是呈现单个应用程序。
您应该查看与 portlet 相关的规范,看看它是否符合您的需要。
http://developers.sun.com/portalserver/reference/techart/jsr168/