Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
Java 自定义现有的内置Liferay portlet_Java_Jsp_Liferay_Portlet_Liferay 6 - Fatal编程技术网

Java 自定义现有的内置Liferay portlet

Java 自定义现有的内置Liferay portlet,java,jsp,liferay,portlet,liferay-6,Java,Jsp,Liferay,Portlet,Liferay 6,我浏览了Liferay文档和许多其他教程。但我仍然对完成我的要求感到惊讶 这就是我需要实现的目标: 1.)在Wiki(内置)Portlet(Portlet中的任何位置)中创建新的自定义按钮或链接(href) 2.)单击该按钮后,我只想在该portlet中打开一个新的jsp页面 我就是这么做的: 我创建了一个Liferay钩子项目,并选择了/wiki/view.jsp进行自定义。 通过以下方式添加了一个按钮: 由于/c/portal/sample url,您的jsp将打开整个页面 您应该使用一些参

我浏览了Liferay文档和许多其他教程。但我仍然对完成我的要求感到惊讶

这就是我需要实现的目标: 1.)在Wiki(内置)Portlet(Portlet中的任何位置)中创建新的自定义按钮或链接(href) 2.)单击该按钮后,我只想在该portlet中打开一个新的jsp页面

我就是这么做的: 我创建了一个Liferay钩子项目,并选择了/wiki/view.jsp进行自定义。 通过以下方式添加了一个按钮:


由于/c/portal/sample url,您的jsp将打开整个页面

您应该使用一些参数集创建renderURL。在重写的StrutAction类的render方法中,检查该参数并呈现自定义jsp


同样,对于action方法,在actionURL中设置一些参数,并在重写的StrutAction类的processAction中检查该参数。

首先,您的liferay-hook.xml看起来不正确。它还应该有一个元素,该元素应该指向钩子中的文件夹,您在其中放置了Wikiportlet的定制view.jsp

<custom-jsp-dir>/custom_jsps</custom-jsp-dir>
/custom\u JSP
此文件夹还应包含单击按钮时要打开的其他JSP文件

注意:在portlet环境中,您不能简单地通过超链接其路径来打开jsp。它将作为独立的jsp由web容器提供。因此,您必须生成一个PortletURL,并从您的Portlet/StrutsAction分派请求生成相应的JSP

因此,在view.jsp中,您需要根据需要使用or标记(如上面提到的Pankaj)创建PortletURL

或者,另一个更简单的解决方案(或者说hack)是使用JQuery.ajax并使用ajax加载JSP的内容

<custom-jsp-dir>/custom_jsps</custom-jsp-dir>