Hello,
I am trying to integrate a Vaadin portlet into Liferay 5.2.3. Does anyone know how to get the name of the current user of Liferay in my Vaadin portlet ?
Thanks,
Kevin.
Hello,
I am trying to integrate a Vaadin portlet into Liferay 5.2.3. Does anyone know how to get the name of the current user of Liferay in my Vaadin portlet ?
Thanks,
Kevin.
See e.g.
this thread
. In short, you need a portlet listener that stores the user somewhere in your application for the duration or a request, and use the portal specific APIs to get details about the user.
I understand I have to implement the class PortletListener first. But when I run it in Liferay (without doing anything else), there is a ClassCastException :
com.vaadin.terminal.gwt.server.ApplicationPortlet cannot be cast to javax.portlet.Portlet.
Here is my code :
package com.example.testvaadin1_0;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.EventRequest;
import javax.portlet.EventResponse;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
import com.vaadin.Application;
import com.vaadin.terminal.gwt.server.PortletApplicationContext2.PortletListener;
import com.vaadin.ui.*;
@SuppressWarnings("serial")
public class Testvaadin1_0Application extends Application implements PortletListener {
@Override
public void init() {
Window mainWindow = new Window("Testvaadin1_0 Application");
Label label = new Label("Hello Vaadin user");
mainWindow.addComponent(label);
setMainWindow(mainWindow);
}
@Override
public void handleActionRequest(ActionRequest request,
ActionResponse response, Window window) {
// TODO Auto-generated method stub
}
@Override
public void handleEventRequest(EventRequest request,
EventResponse response, Window window) {
// TODO Auto-generated method stub
}
@Override
public void handleRenderRequest(RenderRequest request,
RenderResponse response, Window window) {
// TODO Auto-generated method stub
}
@Override
public void handleResourceRequest(ResourceRequest request,
ResourceResponse response, Window window) {
// TODO Auto-generated method stub
}
}
This looks like a classloader issue. Are you using a shared Vaadin JAR on the portal or a separate one in the portlet?
Using a shared JAR might help - see e.g.
these instructions
or
the book
. Note especially the parts about copying the Vaadin JAR to “vaadin.jar” on the portal and the settings in liferay-plugin-package.properties .
Note also (as explained in the thread I referred to IIRC): If using Portlet 1.0 (ApplicationPortlet), you must use PortletApplicationContext.PortletListener. If using Portlet 2.0 (ApplicationPortlet2), you must use PortletApplicationContext2.PortletListener.
I have a separate vaadin.jar in my portlet but I use a portlet.jar (which contains javax.portlet…) in my portlet and another portlet.jar in Liferay.
Do you think it is the problem ?
Probably, if it is deployed with the portlet.
Try moving it to a directory that is not deployed (or not on the classpath on the portal, outside of WEB-INF/lib) and changing your development environment classpath to point to it.
Thank you very much Henri !!! You solved my problem