Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取友好的URL以在Liferay中工作_Url_Liferay_Portlet - Fatal编程技术网

获取友好的URL以在Liferay中工作

获取友好的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 真

我想在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
真的
我的
内容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">