标签: portlet

portlet 2.0(jsr286)与spring的开发

我们正在讨论从liferay安装上的普通portlet开发切换到基于webmvc portlet的开发是否是一个好主意.

我们很快就会开始开发一些portlet,所以现在是时候了.但我看到的问题是我们想要使用一些portlet 2.0功能,这些功能不适用于早于spring 3.0的版本.(对?)

有没有人见过,如果值得等待?(什么时候预定3.0?)目前的里程碑是否足够稳定?

我们的第一个真正的发布将在今年的最后一个季度,所以springource的家伙还有一些时间来获得最后的决定...... ;-)

有任何想法吗?

UPDATE

因此,Spring 3已经发布,它支持我们需要的所有JSR286功能.(我认为这是对JSR286功能的完全支持)

我看到的唯一缺点是文档在注释方面没有达到速度.

java spring portlet spring-mvc jsr286

5
推荐指数
1
解决办法
2838
查看次数

Liferay中是否有内置的网络分析工具?

我需要获取网站的统计信息并生成报告.我正在使用Liferay门户网站.Liferay中是否有内置的网页分析功能?如果是,请帮助如何配置它?

谢谢,Dhananjay

portlet liferay web-analytics

5
推荐指数
1
解决办法
4623
查看次数

如何使用基于Spring MVC注释的portlet控件通过AJAX呈现JSON视图/响应?

我花了最近六个小时来搜索谷歌和stackoverflow来回答这个问题.我原来是一名PHP开发人员,所以请耐心等待 - 从PHP控制器返回一个JSON数组是微不足道的.

我正在使用Spring MVC 3.0,我只想将JSON对象从我的Spring MVC Controller返回给一些Javascript.目前似乎没有简单的方法来使用portlet(https://jira.springsource.org/browse/SPR-7344)进行此操作.我见过的解决方案建议创建另一个提供JSON响应的DispatcherServlet,但我还没有找到一个记录良好的例子.如果有人知道一个很好的方法来完成这个(最好带注释),请告诉我!

ajax json portlet spring-mvc spring-portlet-mvc

5
推荐指数
1
解决办法
1万
查看次数

如何获取为自定义portlet管理器分配的Calendar portlet的portlet-hash css类?

我正在尝试修复为自定义portlet管理器分配的日历portlet的月份导航.从特定的浏览器页面模板调用此管理器:

<div id="calendar"
    tal:content="structure provider:my.custom.portletmanager" />
Run Code Online (Sandbox Code Playgroud)

不幸的是,管理器没有为我呈现带有哈希的包装器,所以我试图手动将kssattr-portlethash css类附加到上面的<div>标签,以使月导航工作(refreshPortlet()需要它).我试过这个:

from plone.portlets.utils import hashPortletInfo
class SectionHomeView(BrowserView):
    """SectionHome browser view
    """
    implements(ISectionHomeView)

    def __init__(self, context, request):
        self.context = context
        self.request = request

    @property
    def getHash(self):
        info = dict(manager = 'my.custom.portletmanager',
                    category = 'context',
                    key = '/my-section',
                    name = 'mycalendar',
                   )
        return hashPortletInfo(info)
Run Code Online (Sandbox Code Playgroud)

使用此代码我得到一个哈希,但日历导航仍然无法正常工作.如何才能访问portlet信息,例如经理,类别,密钥和名称,以便正确计算?

我希望我有来自plone.app.portlets.browser.templatescolumn.pt及其类ColumnPortletManagerRenderer(portlets/manager.py)所描述的行为,但我不知道如何让我的自定义管理器提供那些(即:like默认经理做).

hash portlet calendar plone

5
推荐指数
1
解决办法
383
查看次数

Liferay Portlet和JSF:在渲染阶段重定向

我有一个问题是实现一个简单的HTTP重定向.

我使用Liferay 6.0.6,我们的portlet是用JSF2.0/PortletFaces构建的.

我想在加载视图时调用重定向(而不是在触发操作时).目前,我的函数由PreRenderView监听器调用.

<f:metadata>
  <f:event listener="#{myControler.dispatch}" type="preRenderView" />
</f:metadata>
Run Code Online (Sandbox Code Playgroud)

在这个函数中,我可以检查权限,做其他的事情,在某些情况下,我想将用户重定向到一个新的页面(而不是另一个视图).

我尝试了几种方法,但没有成功.具体来说,我认为这种方法可行:

getFacesContext().getExternalContext().redirect(url);
getFacesContext().responseComplete()
// => Can only redirect during ACTION_PHASE
Run Code Online (Sandbox Code Playgroud)

这个错误是合乎逻辑的,但是有一个强制重定向的解决方案.

它可以在另一个函数中实现,否则,我只需要Hibernate Session(在渲染阶段的开头设置)

你有想法解决这个问题吗?
谢谢!

ps:<redirect />或者?faces-redirect不使用portlet.

redirect portlet liferay jsf-2 liferay-6

5
推荐指数
1
解决办法
7582
查看次数

Liferay Portlets中的事件

在任何portlet应用程序中,如果在两个浏览器选项卡中打开包含portlet的同一页面,那么第一页中的事件与第二页的区别如何?

我想为每个事件分配一个唯一的Id,存储它并将其附加到URL,以便可以共享该链接.

有人能提出他们的想法吗?

此外,如果在其他计算机上打开页面URL,则页面上显示的数据与第一台计算机上显示的数据相同.这是全球设定的.

我怎么能消除这个?

events portlet communication liferay unique-id

5
推荐指数
1
解决办法
1394
查看次数

Liferay中的Portlet导航

所以我在弄清楚如何在liferay中处理导航时遇到了一些麻烦。我是jsp,portlet和liferay的新手,但我认为我已经用尽所有文档来寻找答案。

我正在寻找一种提交html表单并使用字段设置渲染参数的方法。我想拥有可与常规浏览器导航一起使用的URL,以及可添加书签的URL。我想出了一种方法,可以使用javascript用表单中的新值更新已声明的renderurl,但我正在尝试找出一种更干净的方法。

现在我已经尝试了几种方法..使用此页面

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>
<%@ page import="com.liferay.portal.kernel.util.ParamUtil" %>
<%@ page import="com.liferay.portal.kernel.util.Validator" %>
<%@ page import="javax.portlet.PortletPreferences" %>

<portlet:defineObjects />


<%
    PortletPreferences prefs = renderRequest.getPreferences();
    String search = ParamUtil.getString(renderRequest, "search");
%>

<portlet:renderURL var="viewURL">
<portlet:param name="jspPage" value="/view.jsp" />
</portlet:renderURL>

<aui:form action="<%= viewURL %>" method="post">
     <aui:input label="search" name="search" type="text" value="<%=search %>" />
     <aui:button type="submit" />
</aui:form>
Run Code Online (Sandbox Code Playgroud)

使用post,我将得到结果URL:

http://localhost:8080/web/10157/home?p_p_id=search_WAR_searchportlet_INSTANCE_Kt9C&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_search_WAR_searchportlet_INSTANCE_Kt9C_jspPage=%2Fview.jsp
Run Code Online (Sandbox Code Playgroud)

如果我将表单更改为get,那么我将获得以下网址:

http://localhost:8080/web/10157/home?_search_WAR_searchportlet_INSTANCE_Kt9C_search=123
Run Code Online (Sandbox Code Playgroud)

但是使用带有参数集的renderURL,我会得到的,这是post和get都会返回的组合:

http://localhost:8080/web/10157/home?p_p_id=search_WAR_searchportlet_INSTANCE_Kt9C&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_search_WAR_searchportlet_INSTANCE_Kt9C_jspPage=%2Fview.jsp&_search_WAR_searchportlet_INSTANCE_Kt9C_search=123
Run Code Online (Sandbox Code Playgroud)

因此,就目前而言,我可以使用带有post的表单,并且ParamUtil.getString将识别数据,但是该链接不可收藏,或者可以使用带有get的表单,将信息保留在url中,但是我无法获取ParamUtil识别数据。即使我可以使用get表单来识别数据,但我真的不想使用它,因为如果我要从其他portlet的表单进行提交,则不会保留该参数。据我了解,RenderURLs保留了这些内容。

请原谅我,如果我对这些事情完全不满意。我是jsp,portlet和liferay的新手,但是我对应该如何做很多这些事情很迷茫。

portlet liferay

5
推荐指数
1
解决办法
3754
查看次数

如何从Liferay中的页面捕获portlet实例删除事件?

当我的portlet实例将从页面中删除时,我想捕获该事件以从该portlet获取一些首选项值,并执行某些操作.

在Liferay中有没有类似接口或钩子的东西?

portlet liferay liferay-6

5
推荐指数
1
解决办法
920
查看次数

创建Liferay portlet配置页面

我正在尝试为Liferay portlet创建配置页面,因此我可以为它设置一些参数.例如,我想选择控制器在查看时应显示的页面.配置应位于此处:

在此输入图像描述

所以我为配置创建了一个控制器,如下所示:

import com.liferay.portal.kernel.portlet.ConfigurationAction;
import javax.portlet.*;

public class SandboxPortletConfig implements ConfigurationAction {
@Override
public void processAction(PortletConfig portletConfig, 
    ActionRequest actionRequest, ActionResponse actionResponse) 
        throws Exception {

    }

@Override
public String render(PortletConfig portletConfig, RenderRequest renderRequest, 
    RenderResponse renderResponse) throws Exception {
    return "/sandboxPortlet/config";
    }
}
Run Code Online (Sandbox Code Playgroud)

视图部分的JSP页面:

<%@ page pageEncoding="UTF-8"%>
<%@ include file="../init.jsp"%>

<form>
    Select:
    <select>
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
</form>
Run Code Online (Sandbox Code Playgroud)

我已经设置了我的portlet.xml来包含:

<portlet>
    <portlet-name>sandboxPortlet</portlet-name>
    <display-name>Sandbox Portlet</display-name>
    <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
    <init-param>
        <name>contextConfigLocation</name>
        <value>/WEB-INF/spring/sandbox-portlet-context.xml</value>
    </init-param>
    <init-param>
        <name>config-jsp</name>
        <value>/WEB-INF/html/sandboxPortlet/config.jsp</value>
    </init-param>
    <supports>
        <mime-type>text/html</mime-type>
        <portlet-mode>view</portlet-mode>
        <portlet-mode>edit</portlet-mode>
    </supports>
    <portlet-info>
        <title>Sandbox Portlet</title>
        <short-title>Sandbox</short-title> …
Run Code Online (Sandbox Code Playgroud)

java portlet spring-mvc liferay

5
推荐指数
1
解决办法
3696
查看次数

Liferay Portlet错误 - "NoSuchResourceActionException <Portlet> _WAR_ <PortletApp> #VIEW"

我使用Grails 2.0.4,Portlets Plugin 0.9.2Liferay Portlets Plugin 0.4创建了一个自定义的Liferay 6.2 portlet .

部署portlet后,我收到一个奇怪的错误.这是发生的事情:

  1. 通过Web界面上载WAR文件
  2. 将portlet添加到页面
  3. 收到错误消息"出现意外错误.请刷新当前页面."
  4. 刷新页面以发现页面上没有任何portlet工作,并显示以下错误:"内部服务器错误 - 访问请求的资源时发生错误." (见下图)

日志表明以下错误:

com.liferay.portal.NoSuchResourceActionException: <Portlet>_WAR_<PortletApp>#VIEW
Run Code Online (Sandbox Code Playgroud)

我见过其他情况,其中"#VIEW"表示"#ADD_TO_PAGE".请注意,portlet正在部署并在我用于开发的Liferay 6.2的香草版本上正常工作.

有谁知道这个问题可能是什么?谢谢.

堆栈跟踪:

Jan 16, 2014 10:42:40 AM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
com.liferay.portal.NoSuchResourceActionException: <Portlet>_WAR_<PortletApp>#VIEW
    at com.liferay.portal.service.impl.ResourceActionLocalServiceImpl.getResourceAction(ResourceActionLocalServiceImpl.java:196)
    at sun.reflect.GeneratedMethodAccessor308.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115)
    at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175)
    at com.sun.proxy.$Proxy85.getResourceAction(Unknown Source)
    at com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl.doUpdateResourcePermission(ResourcePermissionLocalServiceImpl.java:1190)
    at com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl.updateResourcePermission(ResourcePermissionLocalServiceImpl.java:1312)
    at com.liferay.portal.service.impl.ResourcePermissionLocalServiceImpl.setOwnerResourcePermissions(ResourcePermissionLocalServiceImpl.java:1038)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115)
    at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62) …
Run Code Online (Sandbox Code Playgroud)

grails portal portlet liferay liferay-6

5
推荐指数
1
解决办法
5344
查看次数