Foren

Where to find the Liferay Template engine from a portlet?

thumbnail
Sven Ehlert, geändert vor 14 Jahren.

Where to find the Liferay Template engine from a portlet?

New Member Beiträge: 24 Beitrittsdatum: 19.08.09 Neueste Beiträge
Hi,

I'm developing a simple Struts2 portlet based on the "Sample Struts 2 (WebWorks) Portlet 5.2.3.1", ID: robisoft/0005/5.2.3.1/war for Liferay 5.2.3

Now I have a simple view.jsp (with nearly no Java code behind) that displays a form using the standard struts taglib:
<%@ taglib prefix="s" uri="/struts-tags" %>

<s:form action="helloForm" method="POST">
    <s:textfield label="Enter Your Name: " name="name" value="%{name}" />
    <s:submit value="Send" />
</s:form>


This works as expected, but when I want to introduce Liferay's theming support into my view.jsp like the following
&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;
&lt;%@ taglib prefix="liferay-theme" uri="http://liferay.com/tld/theme"%&gt;
<liferay-theme:defineobjects />

thumbnail
Sven Ehlert, geändert vor 14 Jahren.

RE: Where to find the Liferay Template engine from a portlet?

New Member Beiträge: 24 Beitrittsdatum: 19.08.09 Neueste Beiträge
I guess I found the problem by myself.

When using Struts 2, you have to prohibit Struts 2 from trying to do theming by itself, and leave this job done to Liferay. A simple workaround is to add a theme="xhtml" attribute to each struts tag, like this
&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;

<s:form action="helloForm" method="POST" theme="xhtml">
    <s:textfield label="Enter Your Name: " name="name" value="%{name}" />
    <s:submit value="Send" />
</s:form>
jacks blues, geändert vor 14 Jahren.

RE: Where to find the Liferay Template engine from a portlet?

New Member Beiträge: 3 Beitrittsdatum: 04.02.10 Neueste Beiträge
hi,i have the same problem,and there also was the exception when i added "theme="xhtml" to the action.

My exception:


ava.lang.NullPointerException
org.apache.struts2.components.UIBean.evaluateParams(UIBean.java:792)
org.apache.struts2.components.UIBean.end(UIBean.java:510)
org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)
org.apache.jsp.comics.Comic_005fupload_jsp._jspx_meth_s_005ftextfield_005f0(Comic_005fupload_jsp.java:517)
org.apache.jsp.comics.Comic_005fupload_jsp._jspx_meth_s_005fform_005f0(Comic_005fupload_jsp.java:339)
org.apache.jsp.comics.Comic_005fupload_jsp._jspService(Comic_005fupload_jsp.java:221)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:94)
com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:140)
com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:94)
com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:94)
com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389)
Gabor Toth, geändert vor 11 Jahren.

RE: Where to find the Liferay Template engine from a portlet?

New Member Beiträge: 2 Beitrittsdatum: 22.04.10 Neueste Beiträge
Add
<s:set var="theme" value="" />
after
<liferay-theme:defineObjects/>.

The problem is that the defineObjects tag adds a variable called theme, and the method org.apache.struts2.components.UIBean.getTheme finds it by calling
theme = stack.findString("#attr.theme");