Foren

ViewPage of portlet.xml

Priya Pratheep, geändert vor 11 Jahren.

ViewPage of portlet.xml

Junior Member Beiträge: 38 Beitrittsdatum: 14.03.13 Neueste Beiträge
Hi friends,

I am using IPC call for inter portlet communication.

In portlet A

	<liferay-portlet:actionurl var="linkURL" name="prepareObjects" portletname="apseprojectmgmtportlet_WAR_apseprojectmgmtportlet" windowstate="maximized">
			<portlet:param name="struts_action" value="/apse-projectmgmt-portlet/projectCostingSheetAction2" />
			<portlet:param name="procode" value="8055T215" />
			<portlet:param name="csid" value="101" />
	</liferay-portlet:actionurl>"&gt; 
	<a href="<%= linkURL%>">MGM Portlet </a>
	


In portlet B where struts is used...

in portlet.xml
<init-param>
          <name>ViewPage</name>
	  <value>/apse-projectmgmt-portlet/portlet_action/apse-projectmgmt-portlet/viewAction</value>
</init-param>


In struts.xml
	<action path="/portlet_action/apse-projectmgmt-portlet/viewAction" type="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction">
			<forward name="continue" path="/jsp/project_list.jsp"></forward>			
		</action>

where is /project_list.jsp is the default page when i enter directly to the portletB

I want to go to /jsp/project_costingsheet2.jsp page when I click the link of Portlet A

so I tried with
<action path="/portlet_action/apse-projectmgmt-portlet/viewAction1" type="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction">
			<forward name="continue" path="/jsp/project_costingsheet2.jsp"></forward>			
</action>


 
                 <name>ViewPage</name>
		 <value>/apse-projectmgmt-portlet/portlet_action/apse-projectmgmt-portlet/viewAction1</value>
 	


Page is going to project_costingsheet2.jsp where i want to go .But I directly access Portlet B It is going to project_costingsheet2.jsp instead of project_list.jsp

So my question is Is it possible to give two
<name>ViewPage</name> ?

How can I resolve this.

I want to to go project_costingsheet2.jsp when i click the link in portlet A and project_list.jsp when i directly access portlet B

Thanks Priya
thumbnail
Rahul Pande, geändert vor 11 Jahren.

RE: ViewPage of portlet.xml

Expert Beiträge: 310 Beitrittsdatum: 07.07.10 Neueste Beiträge
Hi Priya,

As per your description you want to achieve following things.
1. onClick of link in Portlet A, you want display page2.jsp in Portlet B.
2. When you directly access Portlet B, page1.jsp should be displayed.

1. onClick of link in Portlet A, you want display page2.jsp in Portlet B.

Create an action in struts-config.xml for page2.jsp.
struts-config.xml
<action path="/xyz/abc" forward="portlet.xyz.abc" />


Map a jsp in tiles-defs.xml for page2.jsp
tiles-defs.xml
 <definition name="portlet.xyz.abc" extends="portlet.xyz">
	<put name="portlet_content" value="{path of page2.jsp in Portlet B}" />
  </definition>


2. When you directly access Portlet B, page1.jsp should be displayed.
You already have action mapping for default page i.e page1.jsp in Portlet B.


Hope that helps

Thanks
Rahul
Priya Pratheep, geändert vor 11 Jahren.

RE: ViewPage of portlet.xml

Junior Member Beiträge: 38 Beitrittsdatum: 14.03.13 Neueste Beiträge
Hi Rahul Pande,

Thanks for reply...Yes Correct I want

1. onClick of link in Portlet A, you want display page2.jsp in Portlet B.
2. When you directly access Portlet B, page1.jsp should be displayed.

In struts-config.xml

For page1.jsp
<action path="/portlet_action/apse-projectmgmt-portlet/viewAction" type="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction">
			<forward name="continue" path="/jsp/page1.jsp"></forward>			
</action>


For page2.jsp
<action path="/portlet_action/apse-projectmgmt-portlet/viewAction1" type="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction">
			<forward name="continue" path="/jsp/page2.jsp"></forward>			
</action>


In our project we are not using tiles-defs.xml


In portlet.xml

<init-param>
			<name>ViewPage</name>
			<value>/apse-projectmgmt-portlet/portlet_action/apse-projectmgmt-portlet/viewAction</value>
</init-param> 	


I am new to this struts and Liferay .. struggling ...

Thanks in advance
Priya
thumbnail
Rahul Pande, geändert vor 11 Jahren.

RE: ViewPage of portlet.xml

Expert Beiträge: 310 Beitrittsdatum: 07.07.10 Neueste Beiträge
Hi Priya,

Yes, you can have multiple init parameters in portlet.xml.

For your requirement you can have two init parameters 'page1' and 'page2'. Depend on the request you can redirect to either page1 or page2.

Thanks
Rahul
Priya Pratheep, geändert vor 11 Jahren.

RE: ViewPage of portlet.xml

Junior Member Beiträge: 38 Beitrittsdatum: 14.03.13 Neueste Beiträge
Hi Rahul Pande,

Thanks for Reply...

I edited tiles-defs.xml from deployment folder

<definition name="apse-projectmgmt-portlet.viewAction1" extends="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction">
      <put name="content" value="/jsp/project_costingsheet2.jsp" />
 </definition>


and in struts-config.xml

<action path="/portlet_action/apse-projectmgmt-portlet/viewAction1" type="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction">
			<forward name="continue" path="/jsp/project_costingsheet2.jsp"></forward>			
</action>


in portlet.xml
	<init-param>
			<name>ViewPage1</name>
			<value>/apse-projectmgmt-portlet/portlet_action/apse-projectmgmt-portlet/viewAction1</value>
		</init-param> 


Is it correct ..It is not working Pls help

Thanks and REgards
Priya
Priya Pratheep, geändert vor 11 Jahren.

dynamic page selection

Junior Member Beiträge: 38 Beitrittsdatum: 14.03.13 Neueste Beiträge
I am not getting any result. ...I am missing something . Can anybody help me

my struts config

		<action path="/portlet_action/apse-projectmgmt-portlet/viewAction1" type="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction">
			<forward name="continue" path="/jsp/project_costingsheet2.jsp"></forward>			
		</action>


My .ProjectMgmtAction.java file

public class ProjectMgmtAction extends Action{
	
	private Logger logger = LogManager.getLogger(ProjectMgmtAction.class);
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception{
		
		logger.debug("----------------------- inside ProjectMgmtAction --------------------------------");
		if (form!=null)
			logger.debug("form = " +form.getClass().toString());
		else
			logger.debug("form=null");
		if (form==null){
			String userid = request.getRemoteUser();
			logger.debug("userid = " +userid);
			request.setAttribute("APSE_USER_ID", userid);
		}
		else if (form instanceof DynaActionForm){
			logger.debug("----------------------- inside DynaActionForm --------------------------------");
			
			DynaActionForm actionform=(DynaActionForm)form;
		
		    String procode = (String)actionform.get("procode");
			request.setAttribute("procode", procode);			
	
}
		else
			logger.error("form is not instanceof DynaActionForm");
			
		return mapping.findForward("continue");
	}
}


My tiles-defs.xml file

	<definition name="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction" extends="com.bmtap.apse.projectmgmt.action" />
	<definition name="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction" extends="com.bmtap.apse.projectmgmt.action">
				<put name="portlet_content" value="/jsp/project_costingsheet2.jsp" />
	</definition>	



I am getting error of org.apache.struts.tiles.NoSuchDefinitionException: Error while resolving definition inheritance: child 'com.bmtap.apse.projectmgmt.action.ProjectMgmtAction' can't find its ancestor 'com.bmtap.apse.projectmgmt.action'. Please check your description file.

Thanks in advance
Priya
thumbnail
Rahul Pande, geändert vor 11 Jahren.

RE: dynamic page selection

Expert Beiträge: 310 Beitrittsdatum: 07.07.10 Neueste Beiträge
Hi Priya,

Please try doing following changes :

struts-config.xml

Instead of handling a struts action with an action class, forward the request to an jsp page
Try changing following code


  <action path="/portlet_action/apse-projectmgmt-portlet/viewAction1" type="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction">
          <forward name="continue" path="/jsp/project_costingsheet2.jsp"></forward>            
 </action>


with

<action path="/portlet_action/apse-projectmgmt-portlet/viewAction1" forward="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction" />



tiles-defs.xml

Try changing following code

   <definition name="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction" extends="com.bmtap.apse.projectmgmt.action" />
   <definition name="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction" extends="com.bmtap.apse.projectmgmt.action">
          <put name="portlet_content" value="/jsp/project_costingsheet2.jsp" />
   </definition>


with


  <definition name="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction" extends="portlet" />
            <put name="portlet_content" value="{fully qualified location of jsp page}" />
  


HTH
Rahul
Priya Pratheep, geändert vor 11 Jahren.

RE: dynamic page selection

Junior Member Beiträge: 38 Beitrittsdatum: 14.03.13 Neueste Beiträge
Hi Rahul Pande,

Thanks for reply..

When I try the code
<definition name="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction" extends="portlet">
      <put name="portlet_content" value="/jsp/project_costingsheet2.jsp" />
 </definition>


I am getting Error
[b]org.apache.struts.tiles.NoSuchDefinitionException[/b]: Error while resolving definition inheritance: child 'com.bmtap.apse.projectmgmt.action.ProjectMgmtAction' can't find its ancestor 'portlet'. Please check your description file.


(extends="portlet" )This line is where I am getting problem.

Now My doubt is
In deployment folder(D:\APSE\liferay-portal-6.0.5\tomcat-6.0.26\webapps\ROOT\WEB-INF) has one tiles-defs.xml file . which has lot of definitions like
<definition name="portal.j_login_error" extends="portal">
		<put name="title" value="error" />
		<put name="content" value="/portal/j_login_error.jsp" />
	</definition>




For my purpose ,in apse-projectmgmt-portlet development folder I created one tiles-defs.xml file . with
<definition name="com.bmtap.apse.projectmgmt.action.ProjectMgmtAction" extends="portlet">
      <put name="portlet_content" value="/jsp/project_costingsheet2.jsp" />
 </definition>

In this step extends="portlet" is throwing error.

So do i need something for extends="portlet" ? or I need to add above code in deployment folder tiles-defs.xml file.I tried that also but not working.
thumbnail
Rahul Pande, geändert vor 11 Jahren.

RE: dynamic page selection

Expert Beiträge: 310 Beitrittsdatum: 07.07.10 Neueste Beiträge
Hi Priya,

This link might help you.


Thanks
Rahul