我正在尝试动态显示liferay网格的列。出于同样的原因,参考以下链接Dynamic columns in liferay-ui:search-container?中的一些建议,我给用户一个选项,在配置页面中选择所需的表列。配置页面的选定列将保存在数组列表中。
问题:现在我需要根据数组列表值显示列。而是对列属性进行硬编码,我需要迭代列表并在表格/网格中显示所选列。
假设我正在使用liferay默认的USER_模型。配置页面的所有选定列都保存在一个列表中,如下所示,
ArrayList<String> al = new ArrayList<String>();
Iterator<String> itr = al.iterator();
while(itr.hasNext())
{
String columnName = itr.next();
columnName = columnName.trim().toLowerCase();
String columnVal = portletPreferences.getValue(columnName, StringPool.BLANK);
al.add(columnName);
}
现在让我们假设用户在配置页面{名字,姓氏,屏幕名称}中选择了以下列。所以列表只包含这三个值。
根据这些选定的列,我需要在搜索容器中动态创建列[<liferay-ui:search-container-column-text>
]。
<liferay-ui:search-container delta="5" emptyResultsMessage="no-users-were-found">
<liferay-ui:search-container-results
results="<%= ListUtil.subList(users, searchContainer.getStart(),searchContainer.getEnd()) %>"
total="<%= totalNoOfUsers %>">
</liferay-ui:search-container-results>
<liferay-ui:search-container-row className="com.liferay.portal.model.User" keyProperty="userId" modelVar="user">
</liferay-ui:search-container-row>
<liferay-ui:search-iterator />
</liferay-ui:search-container>
如何使用硬编码创建列,如下所示
<liferay-ui:search-container-column-text name="Last Name" value="<%= user.getLastName() %>">
</liferay-ui:search-container-column-text>
需要一些建议,提前致谢