当前位置: 首页 > 知识库问答 >
问题:

如何在Liferay中查看portlet配置页面?

丌官哲彦
2023-03-14

在Liferay IDE中创建portlet时,我已将其配置为具有Liferay的配置模式。作为回应,wizart创建了包含以下文本的JSP文件:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<portlet:defineObjects />

This is the <b>MyPortlet</b> portlet in Config mode.

如何从Liferay调用此页面查看此文本?单击扳手图标并选择Configuration时,我看不到类似的内容。

更新

路径设置正确,因为它是由向导设置的。

问题是如何通过鼠标从Web界面调用这个JSP?

共有2个答案

郭思聪
2023-03-14

从维基上看(不过这里并不丢脸,我花了很长时间才找到):

将配置页面添加到插件Portlet

liferay portlet。xml-

    <portlet>
      <portlet-name>configuration-example</portlet-name>
      <icon>/icon.png</icon> 
      <configuration-action-class>com.sample.jsp.action.ConfigurationActionImpl</configuration-action-class> 
      <instanceable>true</instanceable> 
      <header-portlet-css>/css/test.css</header-portlet-css> 
      <footer-portlet-javascript>/js/test.js</footer-portlet-javascript> 
    </portlet>

配置ActionImpl。java(或您的类)-

    public class ConfigurationActionImpl implements ConfigurationAction {
        public void processAction(PortletConfig config, ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { 

          String portletResource = ParamUtil.getString(actionRequest, "portletResource"); 

          PortletPreferences prefs = PortletPreferencesFactoryUtil.getPortletSetup(actionRequest, portletResource); 

          //Read, validate, and then set form parameters as portlet preferences

          prefs.store();

          SessionMessages.add(actionRequest, portletConfig.getPortletName() + ".doConfigure");
        }
        public String render(PortletConfig config, RenderRequest renderRequest, RenderResponse renderResponse) throws Exception { 

        return "/configuration.jsp";
        }
    }

配置jsp

    <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
    <%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>

    <portlet:defineObjects />

    <form action="<liferay-portlet:actionURL portletConfiguration="true" />" method="post" name="<portlet:namespace />fm"> <input name="<portlet:namespace /><%=Constants.CMD%>" type="hidden" value="<%=Constants.UPDATE%>" /> 

    Type: <select name="<portlet:namespace />type"> <option value="casual">Casual</option> <option value="formal">Formal</option> </select> <br/>

    <input type="button" value="Save" onClick="submitForm(document.<portlet:namespace />fm);" /> </form>

“请注意liferay portlet中的portletConfiguration属性:actionURL标记。”

晏树
2023-03-14

通常问题是没有正确设置配置jsp的路径。

在portlet中。xml

添加以下内容:

<init-param>
    <name>config-template</name>
    <value>/path/to/configuration.jsp</value>
</init-param>

作为的孩子

您的最终portlet。xml应该类似于:

<portlet-app>
    <portlet>
        <portlet-name>my-portlet</portlet-name>
        <display-name>My Portlet</display-name>
        <portlet-class>com.liferay.portlet.StrutsPortlet</portlet-class>
        <init-param>
            <name>config-template</name>
            <value>/path/to/configuration.jsp</value>
        </init-param>
        <init-param>
            <name>view-action</name>
            <value>/my_portlet/view</value>
        </init-param>
        <expiration-cache>0</expiration-cache>
        <supports>
            <mime-type>text/html</mime-type>
        </supports>
    </portlet>
</portlet-app>

 类似资料:
  • 问题内容: 我在尝试在 Liferay 6.0 portlet中 设置会话cookie时遇到问题。我希望能够将cookie设置为客户端浏览器,以存储用于linkedin身份验证的应用程序密钥,然后可以在其中通过其他portlet检索它。 我可以使用以下方法读取Cookie: 这是我阅读失败的尝试。 问题答案: 我发现,无需大量修改Liferay门户本身,设置portlet cookie的唯一方法就

  • 我的页面上有大约4个Portlet和2个web内容。在4个portlet中,一个是定制portlet。我的需求就像我需要在最后加载我的定制portlet一样。我知道我们可以通过在liferay portlet中添加以下条目来设置。xml

  • 我们正在使用Liferay 7.3(CE),并试图用“页面碎片”来拥抱相对较新的“内容页面”功能。我们能够使用

  • 我使用Liferay portlet bundle 6.2(Tomcat)和Liferay IDE(eclipse)。我创建了两个Liferay插件项目。在第一个portlet(第一个插件portlet)中,我使用portlet首选项保存了一些数据。现在,我将在第一个portlet中显示第二个portlet。我怎么能做到?我找到了下面的代码和这个链接 从其他portlet打开portlet 但是,

  • 我想为liferay portlet创建一个配置页面。 portlet.xml的一些代码 配置 liferay-portlet.xml

  • 我需要使用portlet名称获取资源权限。 我将使用portlet的名称,而不是Id。 portlet的资源权限名称是该portlet的Id。我检查了portlet表,它只有Id和其他信息。portlet的其他属性将保存在哪里?。 有没有一种方法可以通过使用portlet的名称来获取portlet的Id。我有一个解决方案来获取所有portlet并进行比较,但是如果我可以使用portlet的名称直接