我一直在liferay中使用搜索容器来显示表中的数据。效果很好!! 这是一段代码:
<%
List<testapp> pendingApprovals = ActionClass.getPendingLeaveApplications();
%>
<liferay-ui:search-container delta="20" emptyResultsMessage="No Results Found">
<liferay-ui:search-container-results total="<%= pendingApprovals.size() %>"
results="<%= ListUtil.subList(pendingApprovals , searchContainer.getStart(), searchContainer.getEnd()) %>" />
<liferay-ui:search-container-row keyProperty = "empId" modelVar="search"
className="com.test.mis.portal.model.testapp">
<liferay-ui:search-container-column-text name='Leave Duration' value = '<%=String.valueOf(search.getLeaveDuration())%>' href="" />
</liferay-ui:search-container-row>
<liferay-ui:search-iterator/>
</liferay-ui:search-container>
使用上面的代码,我根据某些条件显示 testapp 表中的数据。 在相同的代码中,我想添加一行并显示数据。该行的数据应该来自另一个表。简而言之,我想使用两个不同数据库表中的搜索容器显示数据。 可以做吗?我的要求是数据来自两个不同的表
根据要求编辑的部分 我有包含一些字段的员工表 我有另一张 table 留下一些字段。 empId 位于休假表中,该表映射到员工表。
我有一个搜索容器,仅当休假待处理时才显示休假表中的数据 我只想显示员工表中与休假表匹配并满足上述条件的字段。
最佳答案
你的问题有两个方面:
- 能够使用employeeId 外键从表Leave 和Employee 中检索数据。您不需要为此进行自定义查询,这是一项非常简单的任务,我只是指出这一点。
- 在搜索容器中显示无法从一个数据/表检索到的数据。正如您所看到的,名为“className”的“liferay-ui:search-container-row”属性可以采用一个类名称的值。对此,我可以看到两种方法:
a) 检索每个休假表的结果,并按员工 ID 和待处理状态进行筛选。然后在每一行中,使用employeeId再次获取Employee实例(通过EmployeeLocalServiceUtil.getEmployee(empId)),然后获取Employye属性,例如员工姓名等。这将需要您亲自处理jsp文件
b) 创建一个自定义类(例如 EmployeePendingLeaves),并将其用作 searchContainer 的模型类。不要将其包含在您的数据库模型中。只需创建一个扫描 Employee 和 Leave 表的函数,并为每个结果行创建一个 EmployeePendingLeaves 实例。它应该为每一行的列都有一个变量/属性
关于java - 在Liferay搜索容器中显示来自不同数据库表的数据: Liferay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16171384/