想要使用out.print()
在我自己的 taglib 中创建指向其他portlet页面的链接,但在执行中,liferay无法呈现<portlet:renderURL>
taglibs:
taglib代码:
int counter = 0;
while (rs.next()) {
counter++;
int spcPk = Integer.parseInt(rs.getString("tCommodityGroupSpcPK"));
result = "<tr>" +
" <td id=\"group-"+counter+"\">" +
" <a href=\"<portlet:renderURL><portlet:param name='jspPage'" +
" value='subGroup.jsp?p1="+spcPk+"' /></portlet:renderURL>\" /> " +
" "+rs.getString("xa")+" " +
" </a> " +
" </td> " +
" <td id=\"group-"+counter+"\">"+rs.getString("xx")+"</td> " +
" <td id=\"group-"+counter+"\">"+rs.getString("aa")+"</td> " +
" <td id=\"group-"+counter+"\">"+rs.getString("Result")+"</td> " +
" </tr>";
out.print(result);
}
rs.close();
// out.println(result);
cstmt.close();
执行view.jsp和其他标签的已经成功呈现,但是liferay taglibs没有..当我点击链接时,我在我的网址中有这样的东西!!
localhost:8081/%3Cportlet:renderURL%3E%3Cportlet:param%20name='jspPage'%20value='subGroup.jsp?p1=3'%20/%3E%3C/portlet:renderURL%3E
有人可以帮我在自定义taglib类中渲染taglib吗?
答案 0 :(得分:0)
很明显,JSP Engine
将您的标记视为任何其他标记。
您必须使用API
而不是Tag
,如下所述
PortletURL portletURL = renderResponse.createRenderURL();
portletURL.setParameter("jspPage", "subGroup.jsp?p1="+spcPk);
然后将portletURL.toString()
注入标记
如果您在renderRequest
中定义renderResponse
,则应该隐式访问<portlet:defineObjects />
和JSP
。
从普通request
对象获取它们的另一种方法是
PortletResponse portletResponse = (PortletResponse)request.getAttribute(JavaConstants.JAVAX_PORTLET_RESPONSE);
您可以参考任何现有Liferay UI
标签的源代码,例如asset-categories-navigation
,以获取更多信息。