You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bridges-user@portals.apache.org by 朱立勋 <zh...@gmail.com> on 2006/08/03 04:19:25 UTC

uPortal 2.5.2 and Struts Bridges question

I made reference to jpetstore after uPortal2.5.2 Lane use struts bridges,But without success  ...
jar libray:struts-1.2.7,struts-el-1.2.7,standard-1.0.6,portals-bridges-struts-1.2.7-1.0,portals-bridges-common-1.0.......
portlet.xml
----------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app id="ServletContextProvider" version="1.0">
   <portlet id="ServletContextProvider">
    <init-param>
      <name>ServletContextProvider</name>
      <value>sample.portlet.bridge.PortalServletContextProvider</value>
    </init-param>
    <init-param>
      <name>ViewPage</name>
      <value>/easySample.do</value>
    </init-param>
   <description>Portlet Sample</description>
    <portlet-name>StrutsBridgeSample</portlet-name>
    <display-name>StrutsBridgeSample</display-name>
    <portlet-class>org.apache.portals.bridges.struts.StrutsPortlet</portlet-class>
    <expiration-cache>-1</expiration-cache>
    <supports>
      <mime-type>text/html</mime-type>
      <portlet-mode>VIEW</portlet-mode>
    </supports>
    <portlet-info>
      <title>StrutsBridgeSample</title>
      <keywords>Struts</keywords>
    </portlet-info>
  </portlet>
</portlet-app>
---------------------------------
struts-portlet-config.xml
-----------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<config>
  <render-context>
    <attribute name="errors"/>
    <attribute name="message"/>
  </render-context>
  <portlet-url-type>
    <render path="/easySample5"/>
    <action path="/easySample3"/>
    <resource path="/images/"/>
  </portlet-url-type>
</config>
----------------------------------
struts-config.xml
---------------------------------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
  <form-beans>
    <form-bean name="easySampleForm" type="sample.portlet.bridge.action.EasySampleForm"/>
  </form-beans>
  <global-exceptions>
    <exception key="errors.general" type="java.lang.Exception" path="/helloWorld.jsp"/>
  </global-exceptions>
  <action-mappings>
    <action path="/easySample3" type="sample.portlet.bridge.action.BeanAction"
      name="easySampleForm" scope="session"
      validate="false" >
      <forward name="success" path="/easySample3.do" redirect="true"/>
    </action>
    <action path="/easySample" include="/strutsBridge/EasySample.jsp"/>
    <action path="/easySample1" include="/strutsBridge/EasySample.jsp"/>
    <action path="/easySample2" include="/strutsBridge/EasySample.jsp"/>
    <action path="/easySample4" include="/strutsBridge/EasySample.jsp"/>
    <action path="/easySample5" include="/strutsBridge/EasySample.jsp"/>
  </action-mappings>
  <controller pagePattern="$M$P" inputForward="false" processorClass="org.apache.portals.bridges.struts.PortletRequestProcessor"/>
  <message-resources parameter="properties.application"/>
</struts-config>
--------------------------------------------------------
/strutsBridge/EasySample.jsp
-----------------------------------------------------------
<%@page contentType="text/html"%>
<%@ taglib uri="http://portals.apache.org/bridges/struts/tags-portlet-html" prefix="html" %>
------- html:link href -----------<br />
<html:link href="easySample.do">link to salf</html:link><br />
<html:link href="easySample1.do">1 link to salf</html:link><br />
<html:link href="easySample2.do">2 link to salf</html:link><br />
<html:link href="easySample3.do">3 link to salf</html:link><br />
------- html:link action -----------<br />
<html:link action="easySample.do">link to salf</html:link><br />
<html:link action="easySample1.do">1 link to salf</html:link><br />
<html:link action="easySample2.do">2 link to salf</html:link><br />
<html:link action="easySample3.do">3 link to salf</html:link><br />
------- html:rewrite href -----------<br />
<html:rewrite href="easySample.do"/><br />
<html:rewrite href="easySample1.do"/><br />
<html:rewrite href="easySample2.do"/><br />
<html:rewrite href="easySample3.do"/><br />
------- html:rewrite action -----------<br />
<html:rewrite action="easySample.do"/><br />
<html:rewrite action="easySample1.do"/><br />
<html:rewrite action="easySample2.do"/><br />
<html:rewrite action="easySample3.do"/><br />
---form bean data--- <br />
<html:form method="post" action="/easySample3.do">
<input name=username size=14><br />
<html:image border="0" src="images/IMG_1944.JPG"/><br />
</html:form>
---form bean data--- <br />
<br />
          <html:link page="images/IMG_1944.JPG">
            <html:img border="0" src="images/IMG_1944.JPG" />
          </html:link>
<br />
<br />
------------------------------------------------------------------
sample.portlet.bridge.PortalServletContextProvider.java
-------------------------------------------------------------------------------
package sample.portlet.bridge;

import javax.portlet.GenericPortlet;
import javax.portlet.PortletRequest;
import javax.portlet.PortletResponse;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

import org.apache.pluto.core.impl.PortletContextImpl;
import org.apache.portals.bridges.common.ServletContextProvider;

/**
 * PortalServletContextProvider supplies access to the Servlet context of uPortal Portlet.
 */
public class PortalServletContextProvider implements ServletContextProvider {

	public ServletContext getServletContext(GenericPortlet portlet) {
		return ((PortletContextImpl) portlet.getPortletContext())
		.getServletContext();
	}

	public HttpServletRequest getHttpServletRequest(GenericPortlet portlet,
			PortletRequest request) {
		return (HttpServletRequest) ((HttpServletRequestWrapper) request)
		.getRequest();
	}

	public HttpServletResponse getHttpServletResponse(GenericPortlet portlet,
			PortletResponse response) {
		return (HttpServletResponse) ((HttpServletResponseWrapper) response)
				.getResponse();
	}
}
------------------------------------------------------------------------------------------
sample.portlet.bridge.action.EasySampleForm.java
------------------------------------------------------------------------------------------
package sample.portlet.bridge.action;


public class EasySampleForm extends BaseBean {

	/**
	 * username
	 */
	private String username = null;

	/**
	 * password
	 */
	private String password = null;
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}
	
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String easySample()
	{
		System.out.println("###########easySample()");
		return "success";
	}
	public String easySample1()
	{
		System.out.println("###########easySample()1");
		return "success";
	}
	public String easySample2()
	{
		System.out.println("###########easySample()2");
		return "success";
	}
	public String easySample3()
	{
		System.out.println("###########easySample()3");
		return "success";
	}
	public String easySample4()
	{
		System.out.println("###########easySample()4");
		return "success";
	}
	public String easySample5()
	{
		System.out.println("###########easySample()5");
		return "success";
	}
	  public void clear () {
		System.out.println("###########clear()");
	  }
}
------------------------------------------------------------------------------------------
BaseBean and BeanAction use the code jpetstore.
Activated uPortal, and the operation of portlet. Then I submitted the form page view, the emergence of such language presentation.
------------------------------ 
The requested resource (/StrutsBridgeSample/easySample2.do#n142) is not available 
------------------------------
Laws PortalServletContextProvider
sample.portlet.bridge.PortalServletContextProvider.java 
------------------------------------------
package sample.portlet.bridge;

import javax.portlet.*;
import javax.servlet.ServletContext;
import javax.servlet.http.*;
import org.apache.pluto.core.impl.PortletContextImpl;
import org.apache.portals.bridges.common.ServletContextProvider;

// Referenced classes of package ca.mun.portal.bridges:
//            PortletResponseWrapper

public class PortalServletContextProvider
    implements ServletContextProvider
{

    public PortalServletContextProvider()
    {
    }

    public ServletContext getServletContext(GenericPortlet portlet)
    {
        return ((PortletContextImpl)portlet.getPortletContext()).getServletContext();
    }

    public HttpServletRequest getHttpServletRequest(GenericPortlet portlet, PortletRequest request)
    {
        return (HttpServletRequest)((HttpServletRequestWrapper)request).getRequest();
    }

    public HttpServletResponse getHttpServletResponse(GenericPortlet portlet, PortletResponse response)
    {
        return (HttpServletResponse)(new PortletResponseWrapper((HttpServletResponse)response)).getResponse();
    }
}
------------------------------------------
sample.portlet.bridge.PortalServletContextProvider.java 
------------------------------------------
package sample.portlet.bridge;
import java.io.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

public class PortletResponseWrapper extends HttpServletResponseWrapper
{
    public PortletResponseWrapper(HttpServletResponse response)
    {
        super(response);
    }

    public ServletOutputStream getOutputStream()
        throws IOException
    {
        return getResponse().getOutputStream();
    }

    public PrintWriter getWriter()
        throws IOException
    {
        return new PrintWriter(new OutputStreamWriter(getOutputStream(), getCharacterEncoding()), true);
    }
}
------------------------------------------
Activated uPortal, and the operation of portlet. Then I submitted the form page view, the emergence of such language presentation.
----------------------------------------------------------------------
Error Report
 
Channel ID:
 n142 
Message:
 Message not available 
Error type:
 Channel failed to accept runtime data (code 3) 
Problem type:
 General rendering problem 
Error message
 java.lang.IllegalArgumentException: Path http://61.11.7.121:8080/StrutsBridgeSample/easySample3.do does not start with a "/" character 
--------------------------------------------------------

help me!!



 				
--------------
zhulx
2006-08-01


---------------------------------------------------------------------
To unsubscribe, e-mail: bridges-user-unsubscribe@portals.apache.org
For additional commands, e-mail: bridges-user-help@portals.apache.org