Kann ich ein Streben -basiertes Portlet erstellen, wenn ein anderes Portlet verwendet wird?
-
05-07-2019 - |
Frage
Ich habe ein ziemlich grundlegendes Portlet mit der Struts -Portlet -Brücke geschrieben und es für Liferay bereitgestellt. Die Navigation in meinem Portlet scheint in Ordnung zu sein. Wenn ich jedoch auf einen Link auf einem anderen Portlet im Portal klicke, kehrt mein Portlet zum Ansichtsaktions -Setup in meinem Portlet zurück. XML, anstatt den bestehenden Staat erneut zu rendern. Was mache ich falsch?
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 dies bereits in den Liferay -Foren gefragt, frage aber auch hier in der Hoffnung auf eine schnelle Antwort.
Lösung
In dem portlet.xml
Versuchen Sie, die Linie zu ändern:
<expiration-cache>0</expiration-cache>
Dies bedeutet, dass die zwischengespeicherte Version des Portlets sofort ausgeht:
<expiration-cache>-1</expiration-cache>
Was bedeutet, dass es niemals abläuft. Von dem 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>