2009-07-30 13 views
0

J'ai écrit un portlet assez basique utilisant le pont de portlets struts et l'ai déployé sur liferay, la navigation dans mon portlet me semble correcte, mais chaque fois que je clique sur un lien sur un autre portlet du portail, mon portlet revient à portlet.xml plutôt que de rendre à nouveau l'état existant. Qu'est-ce que je fais mal?Puis-je faire en sorte qu'un portlet basé sur des struts se souvienne de sa vue lorsqu'un autre portlet est utilisé?

Mon portlet.xml est:

<?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> 

et struts-portlet-config.xml est:

<?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 J'ai déjà demandé cela sur les forums Liferay, mais je demande ici aussi dans l'espoir de une réponse rapide.

Répondre

2

Dans le portlet.xml essayez de changer la ligne:

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

ce qui signifie que la version mise en cache du portlet expire immédiatement à:

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

qui signifie qu'il expire jamais. De la 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! Je savais que la réponse me regardait en face –