0

想在我自己的taglib中创建指向其他 portlet 页面的链接,out.print()但在执行时 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 标签库没有......当我点击链接时,我的 url 中有类似的东西!

localhost:8081/%3Cportlet:renderURL%3E%3Cportlet:param%20name='jspPage'%20value='subGroup.jsp?p1=3'%20/%3E%3C/portlet:renderURL%3E

任何人都可以帮助我在自定义标记库类中呈现标记库吗?

4

1 回答 1

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以获取更多信息。

于 2013-07-20T23:20:12.863 回答