获取友好的URL以在Liferay中工作
我想在liferay中为我的JSR-268 Portlet启用友好的URL 我按照中的说明配置了友好的url映射器,但不知怎的,这对我不起作用 我错过了什么 我的获取友好的URL以在Liferay中工作,url,liferay,portlet,Url,Liferay,Portlet,我想在liferay中为我的JSR-268 Portlet启用友好的URL 我按照中的说明配置了友好的url映射器,但不知怎的,这对我不起作用 我错过了什么 我的liferayportlet.xml如下所示: 内容 com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper 内容 com/gentics/cr/portlet/content-url-routes.xml 真的 航行 /icon.png 真的 搜索 /icon.png 真
liferayportlet.xml
如下所示:
内容
com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper
内容
com/gentics/cr/portlet/content-url-routes.xml
真的
航行
/icon.png
真的
搜索
/icon.png
真的
我的内容url routes.xml
如下所示:
/content/{contentid}
portlet中呈现的URL仍然是:http://localhost:8080/web/guest/home?p_auth=Yu81QQrj&p_p_id=content_WAR_genticsportlet_INSTANCE_R2HSaoL5RkHi&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-2&p\p\U col\u count=1&p\U content\u WAR\u genticsportlet\u INSTANCE\u R2HSaoL5RkHi\u contentid=10007.33
URL是使用以下代码创建的:
PortletURL actionURL=response.createActionURL();
actionURL.setParameter(“contentid”,“10007.33”);
如果你能为我指出正确的方向,那就太好了。你的路线应该从
内容之后的部分开始,因为内容已经是生成的URL的一部分。值content
用于此
<route>
<pattern>/{contentid}</pattern>
</route>
下面是Adarshr的回答,您还可以通过创建自己的类来扩展DefaultFriendlyURLMapper并重写该方法,从而摆脱/-/部分
isCheckMappingWithPrefix,因此您可以获得:
@覆盖
公共布尔值isCheckMappingWithPrefix(){
返回false;
}
所以你的URL应该是
。然后在友好的url映射器类标记中设置类。您可以在GitHub上的这个portlet项目中看到:
~~编辑~~
感谢Prakash指出旧链接不起作用。我通过使用
/myportlet
生命周期、状态和模式从url中消失。但是没有办法删除p_auth和URL的其余部分:我只是尝试了一下。。。但它仍然不起作用。我假设url映射以两种方式工作:内容中的url应该已经呈现为友好url。。。正确的?instanceid/InstanceTable也可能有问题吗?我昨天开始探索友好URL时就有这个疑问。经过大量的调试,结果证明它是正确的。我添加了一个通用的/
来让它工作。尝试使用instanceable=false
排除instanceid
问题。谢谢。。。通用/通用的方法至少改变了一些东西。现在我的URL看起来好像我也将instanceable设置为false,但我仍然得到了INSTANCE\u R2。。。在contentid参数中:/I我可能只需要玩一下。是的,这有点笨拙,文档中没有这些细微差别。非常感谢您链接本文。。。我来看看:)别担心!:)如果您有任何问题或改进建议,请告诉我!棒极了!我可能会在我的项目中使用它。谢谢@PrakashK,我已经更新了我的答案,并在GitHub上链接了一个例子
<!DOCTYPE routes PUBLIC "-//Liferay//DTD Friendly URL Routes 6.1.0//EN" "http://www.liferay.com/dtd/liferay-friendly-url-routes_6_1_0.dtd">