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

Liferay成绩簿应用报错:找不到entry_search_columns.jspf及变量无法解析

问题解决方案

1. 解决文件找不到异常(PWC6117: File "/assignment/entry_search_columns.jspf" not found)

  • 确认文件位置:确保entry_search_columns.jspf文件放在Liferay Portlet的标准资源目录下,即src/main/resources/META-INF/resources/assignment/。Liferay仅会识别该路径下的前端资源文件。
  • 检查引用路径:在view.jsp中引用该文件时,确保路径与实际文件位置完全匹配。正确的引用代码应为:
    <%@ include file="/assignment/entry_search_columns.jspf" %>
    
    路径开头的/表示从Portlet的根资源目录(META-INF/resources/)开始查找。

2. 解决entry、row无法解析的错误

这两个变量必须在Liferay搜索容器的循环上下文内才能被识别,需确保entry_search_columns.jspf被正确包含在搜索容器的行定义范围内:

步骤1:在view.jsp中构建正确的搜索容器结构

<liferay-ui:search-container>
    <!-- 定义搜索结果集 -->
    <liferay-ui:search-container-results
        results="${assignments}"
        total="${assignmentsCount}"
    />

    <!-- 定义搜索行,通过modelVar暴露entry变量 -->
    <liferay-ui:search-container-row
        className="com.your.package.Assignment" <!-- 替换为你的Assignment实体类全路径 -->
        keyProperty="assignmentId"
        modelVar="entry" <!-- 此处定义的变量即为jspf中使用的entry -->
    >
        <!-- 包含列定义的jspf文件 -->
        <%@ include file="/assignment/entry_search_columns.jspf" %>
    </liferay-ui:search-container-row>

    <!-- 分页组件 -->
    <liferay-ui:search-container-paginator />
</liferay-ui:search-container>

步骤2:在entry_search_columns.jspf中添加必要的依赖声明

在jspf文件开头添加以下内容,确保标签库和实体类被正确引入:

<%@ page import="com.your.package.Assignment" %> <!-- 替换为你的实体类路径 -->
<%@ page import="com.liferay.portal.kernel.util.LanguageUtil" %>
<%@ page import="com.liferay.portal.kernel.util.HtmlUtil" %>
<%@ taglib prefix="portlet" uri="http://java.sun.com/portlet_2_0" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="liferay-ui" uri="http://liferay.com/tld/ui" %>
<%@ taglib prefix="liferay-frontend" uri="http://liferay.com/tld/frontend" %>
<%@ taglib prefix="aui" uri="http://liferay.com/tld/aui" %>

关键说明

  • modelVar="entry":由<liferay-ui:search-container-row>标签定义,会将当前循环的Assignment实体对象赋值给entry变量,供jspf直接调用。
  • row变量:是<liferay-ui:search-container-row>标签自动暴露的内置变量,代表当前搜索容器行对象,无需额外定义即可使用。

完成上述调整后,重新构建并部署Portlet即可解决问题。

内容的提问来源于stack exchange,提问作者Md Tahmid Ashraf Chowdhury

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:43:19