Foren

Struts2 portlet ThemeDisplay

thumbnail
Riccardo Ferrari, geändert vor 12 Jahren.

Struts2 portlet ThemeDisplay

Regular Member Beiträge: 139 Beitrittsdatum: 13.11.10 Neueste Beiträge
Hello everybody,
is there a efficient way to get ThemeDisplay inside Struts2 ActionSupport classes?
I've tried to implement ServletContextAware, SessionAware, ServletRequestAware, ServletResponseAware but i can't get the rendereRequest.

Any hints?
Thanks in advance
thumbnail
jelmer kuperus, geändert vor 12 Jahren.

RE: Struts2 portlet ThemeDisplay

Liferay Legend Beiträge: 1191 Beitrittsdatum: 10.03.10 Neueste Beiträge
http://struts.apache.org/2.0.11.1/struts2-core/apidocs/org/apache/struts2/portlet/interceptor/PortletRequestAware.html
thumbnail
Riccardo Ferrari, geändert vor 12 Jahren.

RE: Struts2 portlet ThemeDisplay

Regular Member Beiträge: 139 Beitrittsdatum: 13.11.10 Neueste Beiträge
thank you for your answer,
do i need to specify any configuration to get this used? It doesn't get called (setPortletRequest method)
All other interfaces that i had implemented are called ok.

Thanks
thumbnail
jelmer kuperus, geändert vor 12 Jahren.

RE: Struts2 portlet ThemeDisplay

Liferay Legend Beiträge: 1191 Beitrittsdatum: 10.03.10 Neueste Beiträge
You probably need to add PortletAwareInterceptor to your interceptor stack
thumbnail
Riccardo Ferrari, geändert vor 12 Jahren.

RE: Struts2 portlet ThemeDisplay

Regular Member Beiträge: 139 Beitrittsdatum: 13.11.10 Neueste Beiträge
Ok ,I'm sorry but i can't figure out how to solve.

I'm doing json validation using ActionSupport.
I developed my abstract class that "should" get in touch with Liferay environment. This class is implementing SessionAware and i want to support Portlet<something>Aware to get portlet namespace to allow me to put messages like SessionErrors.
As you ponted me, i'm missing some interceptor configuration, but whe setting struts.xml confing like this:


	<interceptors>
        <interceptor name="portletAware" class="org.apache.struts2.portlet.interceptor.PortletAwareInterceptor" />
		<interceptor name="portletState" class="org.apache.struts2.portlet.interceptor.PortletStateInterceptor" />
		<!-- Default stack for operating in portlet environment -->
        <interceptor-stack name="portletDefaultStack">
	    <interceptor-ref name="portletState" />
            <interceptor-ref name="portletAware" />
            <interceptor-ref name="defaultStack" />
        </interceptor-stack>
 		   
       </interceptors>
       
       <default-interceptor-ref name="portletDefaultStack" />
       		
		<action name="index2">
			<result>/html/view/view.jsp</result>			
		</action>

		<action name="getJSONResult" class="it.addiction.test.struts2.action.JSONDataAction" method="valid">
         <result name="success" type="json">
                <param name="excludeNullProperties">true
          </result>
          <result name="error" type="json">
          		<param name="ignoreHierarchy">false 
          </result>
 		</action>


PortletContextAwawre interface (implemented by my class) get triggered but with NULL argument.
I think i'm missing something other to implement ...

I'm relly noob, please be patinet.
Thanks for ll of your hints.
thumbnail
Riccardo Ferrari, geändert vor 12 Jahren.

RE: Struts2 portlet ThemeDisplay

Regular Member Beiträge: 139 Beitrittsdatum: 13.11.10 Neueste Beiträge
By the way no interceptors are required. PortletRequestAware is the way to go...
Seyed Mohammad Hosein Jamali, geändert vor 12 Jahren.

RE: Struts2 portlet ThemeDisplay

Junior Member Beiträge: 77 Beitrittsdatum: 13.12.09 Neueste Beiträge
Hi Riccardo ,
I implement PortletRequestAware in my Action class , am i in a right way ?
i want to use user-id of current user so i implement PortletRequestAware and in the method public void setPortletRequest(PortletRequest request) i add user id to session of current user but after call the action and in the execute method my attribute is not exist in the session !!

How is usage of PortletRequestAware ?

Thanks
S.M.H.Jamali
thumbnail
Riccardo Ferrari, geändert vor 12 Jahren.

RE: Struts2 portlet ThemeDisplay

Regular Member Beiträge: 139 Beitrittsdatum: 13.11.10 Neueste Beiträge
Did you solve the portlet request object null?
Have you tried to play with
<private-request-attributes>false</private-request-attributes>
<private-session-attributes>false</private-session-attributes>
in liferay-portlet.xml

I'm not using session but request, Setting private-request-attribute to false, extending struts-portlet-default and implementing PortletRequestAware (but you can check for all *Aware interfaces you like) I'm alway getting portletRequest object in my actions. I can get ThemeDisplay from there and all user related informations.