Message Boards
Problem with AssetRenderer.getURLViewInContext() in 7.2 ?
Problem with AssetRenderer.getURLViewInContext() in 7.2 ?
Regular Member Posts: 107 Join Date: 9/20/11 Recent PostsWe have a custom search portlet that displays links to the results using URLs generated by AssetRenderer. Here is a sample of the code:
String urlMaximzed = renderer.getURLView((LiferayPortletResponse) actionResponse, WindowState.MAXIMIZED);
String urlviewincontext = renderer.getURLViewInContext((LiferayPortletRequest) actionRequest, LiferayPortletResponse) actionResponse, null);
Printing out these URLs gives:
2021-10-26 18:27:55.739 INFO [http-nio-8080-exec-4][CustomSearchPortlet:740] searchDocuments: urlMaximized: http://localhost:8080/web/avengers/search?p_p_id=com_liferay_document_library_web_portlet_DLPortlet&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&_com_liferay_document_library_web_portlet_DLPortlet_mvcRenderCommandName=%2Fdocument_library%2Fview_file_entry&_com_liferay_document_library_web_portlet_DLPortlet_fileEntryId=35816
2021-10-26 18:27:55.742 INFO
[http-nio-8080-exec-4][CustomSearchPortlet:755] searchDocuments:
urlviewincontext = http://localhost:8080/c/document_library/find_file_entry?p_l_id=20&noSuchEntryRedirect=null&fileEntryId=35816
Clicking on the first URL (maximized) in the portlet seems to work fine for all asset types. Clicking on the second (view in context) works for assets other than documents. For documents, clicking on the link produces an error with the following stack trace:
2021-10-26 17:32:29.694 WARN [http-nio-8080-exec-1][PortalImpl:6884]
java.lang.NullPointerException
java.lang.NullPointerException
at
com.liferay.portal.kernel.portlet.PortletIdCodec.decodePortletName(PortletIdCodec.java:48)
at
com.liferay.portal.service.impl.PortletLocalServiceImpl.fetchPortletById(PortletLocalServiceImpl.java:405)
at
com.liferay.portal.service.impl.PortletLocalServiceImpl.getPortletById(PortletLocalServiceImpl.java:523)
at sun.reflect.GeneratedMethodAccessor193.invoke(Unknown
Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:50)
at
com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49)
at com.sun.proxy.$Proxy44.getPortletById(Unknown Source)
at
com.liferay.portal.kernel.service.PortletLocalServiceUtil.getPortletById(PortletLocalServiceUtil.java:339)
at
com.liferay.portlet.internal.PortletURLFactoryImpl.create(PortletURLFactoryImpl.java:81)
at
com.liferay.portal.kernel.portlet.PortletURLFactoryUtil.create(PortletURLFactoryUtil.java:59)
at
com.liferay.portal.struts.FindStrutsAction.execute(FindStrutsAction.java:99)
at
com.liferay.portal.struts.ActionAdapter.execute(ActionAdapter.java:40)
at
com.liferay.portal.struts.PortalRequestProcessor._process(PortalRequestProcessor.java:415)
at
com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:155)
at
com.liferay.portal.internal.servlet.MainServlet.doGet(MainServlet.java:206)
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
at
com.liferay.portal.internal.servlet.MainServlet.service(MainServlet.java:623)
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:124)
at
com.liferay.portal.servlet.filters.password.modified.PasswordModifiedFilter.processFilter(PasswordModifiedFilter.java:62)
at
com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
at
com.liferay.portal.servlet.filters.lockout.LockoutFilter.processFilter(LockoutFilter.java:58)
at
com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
at
com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
at
com.liferay.portal.servlet.filters.secure.BaseAuthFilter.processFilter(BaseAuthFilter.java:357)
at
com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
at
com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
at
com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:88)
at
com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
at
com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
at
com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.processFilter(VirtualHostFilter.java:270)
at
com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
at
com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
at
com.liferay.portal.monitoring.internal.servlet.filter.MonitoringFilter.processFilter(MonitoringFilter.java:183)
at
com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:196)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:196)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99)
at
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
at
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
at
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
at
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389)
at
com.liferay.portal.servlet.filters.urlrewrite.UrlRewriteFilter.processFilter(UrlRewriteFilter.java:65)
at
com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:175)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:175)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:196)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99)
at
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:104)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:880)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1601)
at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
2021-10-26
17:32:30.016 ERROR [http-nio-8080-exec-1][status_jsp:854] null
All of this worked correctly in 6.x, we're just seeing it now as we're migrating to 7.2.
For brevity, AssetRenderer.getURLView returns a URL that works correctly. So does AssetRenderer.getURLExport. Only AssetRenderer.getURLViewInContext is returning a bad URL.
RE: Problem with AssetRenderer.getURLViewInContext() in 7.2 ?
Expert Posts: 449 Join Date: 5/26/15 Recent PostsTry adding a widget page containing a portlet. Such as blogs, I was trying to show blog entries in asset publisher and it'll only work now for view-in-context if there is a context existing (context means page).
Example I had to do this to avoid the error:
<#assign
viewURL = assetRenderer.getURLViewInContext(renderRequest,
renderResponse,
viewURL)!"http://www.50shades-o-liferay.com/oddity-base/find-urls-need-pages-to-exist-with-portlets-to-return-a-url.html" />
The view in context URL looks something like ...
http://localhost:8080/c/blogs/find_entry?p_l_id=67&noSuchEntryRedirect=null&entryId=88020