2009-07-30 5 views
0

Ich habe ein ziemlich einfaches Portlet mit der Struts Portlet Bridge geschrieben und es in liveray implementiert. Die Navigation innerhalb meines Portlets scheint in Ordnung zu sein, aber jedes Mal, wenn ich auf einen Link in einem anderen Portlet im Portal klicke, wird mein Portlet auf das View Action Setup zurückgesetzt portlet.xml, anstatt den vorhandenen Status erneut zu rendern. Was mache ich falsch?Kann ich ein strutsbasiertes Portlet an seine Ansicht erinnern, wenn ein anderes Portlet verwendet wird?

Mein portlet.xml ist:

<?xml version="1.0"?> 

<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"> 
    <portlet> 
    <portlet-name>test</portlet-name> 
    <display-name>Test</display-name> 
    <portlet-class>com.perceptive.ctms.test.portlet.TestPortlet</portlet-class> 

    <init-param> 
     <name>ServletContextProvider</name> 
     <value>com.liferay.util.bridges.struts.LiferayServletContextProviderWrapper</value> 
    </init-param> 
    <init-param> 
     <name>StrutsPortletConfigLocation</name> 
     <value>/WEB-INF/struts-portlet-config.xml</value> 
    </init-param> 
    <init-param> 
     <name>HelpPage</name> 
     <value>/portlet_action/test/help</value> 
    </init-param> 
    <init-param> 
     <name>ViewPage</name> 
     <value>/portlet_action/test/start</value> 
    </init-param> 
    <init-param> 
     <name>EditPage</name> 
     <value>/portlet_action/test/preferences</value> 
    </init-param> 

    <expiration-cache>0</expiration-cache> 
    <supports> 
     <mime-type>text/html</mime-type> 
     <portlet-mode>view</portlet-mode> 
     <portlet-mode>edit</portlet-mode> 
     <portlet-mode>help</portlet-mode> 
    </supports> 
    <portlet-info> 
     <title>Test</title> 
     <short-title>Test</short-title> 
     <keywords>Test</keywords> 
    </portlet-info> 
    </portlet> 

    <filter> 
    <filter-name>AuthenticationFilter</filter-name> 
    <filter-class>com.perceptive.ctms.framework.portlet.filter.AuthenticationFilter</filter-class> 
    <lifecycle>RENDER_PHASE</lifecycle> 
    <lifecycle>ACTION_PHASE</lifecycle> 
    </filter> 

    <filter-mapping> 
    <filter-name>AuthenticationFilter</filter-name> 
    <portlet-name>test</portlet-name> 
    </filter-mapping> 
</portlet-app> 

und struts-portlet-config.xml ist:

<?xml version="1.0" encoding="UTF-8"?> 

<config> 
    <render-context> 
    <attribute name="errors"/> 
    <attribute name="message" keep="true"/> 
    <attribute prefix="com.perceptive" keep="true"/> 
    </render-context> 
    <portlet-url-type default="render"> 
    <render path="/test/help.do"/> 
    <render path="/test/start.do"/> 
    <render path="/test/preferences.do"/> 
    <render path="/test/tableTest.do"/> 
    <render path="/test/displayTagTest.do"/> 
    <render path="/test/lookupTest.do"/> 
    <render path="/test/lookupTestSave.do"/> 
    </portlet-url-type> 
</config> 

PS Ich habe das schon auf den liferay Foren gefragt, aber auch hier ist zu fragen, in der Hoffnung eine schnelle Antwort.

Antwort

2

Im portlet.xml Versuchen Sie, die Zeile:

<expiration-cache>0</expiration-cache> 

, die die im Cache gespeicherte Version des Portlets bedeutet Ablauf sofort zu:

<expiration-cache>-1</expiration-cache> 

das heißt, es läuft nie. Von der portlet-app_2_0.xsd:

<annotation> 
    <documentation> 
     Expiration-time defines the time in seconds after which the portlet output expires. 
     -1 indicates that the output never expires. 
     Used in: portlet 
    </documentation> 
</annotation> 
+0

Aargh! Ich wusste, dass die Antwort mich ins Gesicht starrte –

Verwandte Themen