You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Liferay 7.2.1 fragment-host下Portlet API版本适配问题咨询

Liferay 7.2 Portlet 2.0与3.0适配问题解决方案

Requires 3.0 opt-in 报错的根本原因是Liferay 7.1及以上版本默认搭载Portlet 3.0规范容器,原生不再默认兼容Portlet 2.0的标签库URI调用,你可以根据项目实际情况选择以下任意一种方案解决。


方案1:官方推荐方案(成本最低、无后续兼容风险)

直接修改init.jsp中的标签库引用,将原有2.0的URI替换为3.0版本即可:
原有代码:
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
替换为:
<%@ taglib uri="http://xmlns.jcp.org/portlet_3_0" prefix="portlet" %>
该方案无需修改其他配置,原有portlet标签的使用语法完全兼容,不会影响现有业务逻辑。


方案2:无需修改标签库引用的兼容方案(适合历史JSP较多的场景)

如果现有项目中存在大量使用Portlet 2.0标签库的JSP文件,逐一修改成本过高,可以通过主动声明Portlet版本的方式绕开3.0强制校验,两种配置二选一即可:

  • 在fragment模块的bnd.bnd配置文件中添加如下配置:
    javax.portlet.version=2.0
    该配置会声明当前bundle使用Portlet 2.0规范,容器会自动兼容2.0标签库URI,无需修改任何JSP代码。
  • 若模块中存在自定义portlet.xml文件,也可以在portlet-app根标签中指定版本为2.0:
    <portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">

注意事项

如果选择兼容Portlet 2.0的方案,将无法使用Portlet 3.0提供的异步处理、MVC 1.0注解等新特性,若没有相关需求不影响正常使用。

内容的提问来源于stack exchange,提问作者DyM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 12:45:01