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

如何解决Liferay DXP 7.3.10 GA1中update_password.jsp覆盖后不生效的问题?

解决Liferay自定义JSP覆盖不生效的问题

你已经完成了大部分正确步骤,但浏览器仍加载旧页面,咱们一步步排查可能的问题:

1. 核对自定义JSP的路径是否完全匹配

确保你的自定义JSP放在模块的src/main/resources/META-INF/resources/html/portal/update_password.jsp位置。Liferay对自定义JSP的路径要求严格,必须和portal-web中的原路径完全一致,哪怕拼写错误或层级少一层都会导致失效。

2. 提升service.ranking的优先级

你设置的112可能不足以覆盖内置模块的优先级,试试把值调得更高,比如service.ranking:Integer=200。改完后重新部署模块,让你的CustomJspBag能优先被系统加载。

3. 清除缓存(浏览器+服务器)

这是最容易被忽略的关键点:

  • 浏览器端:按Ctrl+Shift+R(Windows/Linux)或Cmd+Shift+R(Mac)强制刷新,绕过本地缓存。
  • Liferay服务器端:
    • 进入控制面板 → 服务器管理 → 缓存,点击「清除全部缓存」。
    • 也可以手动删除Liferay临时目录([liferay-home]/work、[liferay-home]/temp)的内容,之后重启服务器。

4. 检查CustomJspBag类的实现细节

确认你的子类正确实现了必要方法,尤其是这两个:

@Override
public Map<String, String> getCustomJsps() {
    Map<String, String> customJsps = new HashMap<>();
    customJsps.put(
        "/html/portal/update_password.jsp",
        "/META-INF/resources/html/portal/update_password.jsp"
    );
    return customJsps;
}

@Override
public String getServletContextName() {
    return "你的模块Bundle-SymbolicName";
}

注意getServletContextName必须返回你模块的Bundle Symbolic Name,不能写错。

5. 确认模块的加载状态

  • 打开Gogo Shell,执行lb命令找到你的模块,确认状态是Active。
  • 执行bundle:diag [模块ID],查看是否存在类加载相关的错误。
  • 查看Liferay日志,搜索你的CustomJspBag类名,确认它被系统正确初始化加载。

6. 验证页面的实际调用路径

用浏览器开发者工具查看网络请求,确认当前加载的是哪个页面的内容。有时候原页面可能被其他JSP或模板间接调用,或者存在动态包含的情况,这时候你需要覆盖对应的目标页面。

如果以上步骤都试过仍未解决,可以把CustomJspBag的代码和模块的bnd文件内容贴出来,我再帮你深入排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 07:37:45