Can';无法在portlet中获取liferay登录用户详细信息

Can';无法在portlet中获取liferay登录用户详细信息,liferay,liferay-6,portlet,liferay-theme,Liferay,Liferay 6,Portlet,Liferay Theme,我有一个代理portlet和一个通用portlet。这里,我将Post数据从代理portlet发送到通用portlet。在发送数据时,我使用post方法并发送到view.jsp页面。在view.jsp中,我能够通过输入流获取表单数据。现在的问题是,我需要在通用portlet中获取登录用户详细信息,如果我单独运行通用portlet,我就能够获取用户详细信息。但是我从代理portlet调用view.jsp,无法获得用户详细信息。如果我从proxy porlet调用view.jsp,则可能是通用por

我有一个代理portlet和一个通用portlet。这里,我将Post数据从代理portlet发送到通用portlet。在发送数据时,我使用post方法并发送到view.jsp页面。在view.jsp中,我能够通过输入流获取表单数据。现在的问题是,我需要在通用portlet中获取登录用户详细信息,如果我单独运行通用portlet,我就能够获取用户详细信息。但是我从代理portlet调用view.jsp,无法获得用户详细信息。如果我从proxy porlet调用view.jsp,则可能是通用portlet未初始化,因此它抛出以下错误

9 Mar, 2015 8:35:22 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [/Producer-portlet] threw exception
 [An exception occurred processing JSP page /html/jsp/view.jsp at line 71

68: %>
69:
70: <%
71:  String fullname= user.getFullName();
72:  System.out.println("Full name is: "+fullname);
73:  %>
74:


Stacktrace:] with root cause
java.lang.NullPointerException
        at org.apache.jsp.html.jsp.view_jsp._jspService(view_jsp.java:254)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilt
erChain.java:116)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:
67)
        at $Proxy646.doFilter(Unknown Source)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilt
erChain.java:116)
        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
        at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:123)
        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(Invo
kerFilterChain.java:204)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilt
erChain.java:109)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilte
r.java:74)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(Invo
kerFilterChain.java:204)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilt
erChain.java:109)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:
67)
        at $Proxy646.doFilter(Unknown Source)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilt
erChain.java:116)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFil
ter(InvokerFilterChain.java:165)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilt
erChain.java:96)
        at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilte
r.java:74)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(Invo
kerFilterChain.java:204)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilt
erChain.java:109)
        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.ja
va:96)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:102
3)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.jav
a:589)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619) 

如果我从代理portlet调用我的
view.jsp
,如何获取登录用户详细信息?

在portlet世界中,您失去控制的第一件事是URL。如果您通过servlet请求请求jsp文件(如您在问题的注释中提到的),您将有一个明显绕过门户的servlet请求(门户请求将通过
生成)

因此,您提到的方法在门户世界中是完全错误的。您可以通过
并利用portlet的资源阶段。然而,出于可维护性的原因,我认为从另一个视图中选择一个portlet是不好的做法,而宁愿建议完全重新考虑体系结构。
由于我不完全理解潜在的问题,因此我无法给出将架构更改为什么的建议。

您能否提供关于最后一句话“…如果我从proxy portlet调用my view.jsp”?的更多详细信息?在我的proxy portlet中,我将使用以下代码发送表单数据,send(uri=”“,method=“POST”,content=“xml”)如果执行了上述行,那么控件将转到view.jsp。但是,如果我没有正确调用portlet,则无法在view.jsp中获取用户详细信息。那么如何调用portlet呢
<%@ page import="com.liferay.portal.model.User" %>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="theme" %>

<portlet:defineObjects />
<theme:defineObjects />
 <%
     DataInputStream in = new DataInputStream (request.getInputStream());
     StringBuffer buffer = new StringBuffer();
        int value;
        while ((value=in.read()) != -1) {
            buffer.append((char)value);
          }
      String formData =  buffer.toString();
%>
<%
 String fullname= user.getFullName();
 System.out.println("Full name is: "+fullname);
 %>
<h1>Welcome to Liferay MVC Employee Portlet</h1>