07-20-2023, 02:18 PM
I am absolutly new in Liferay portlet development and I have the following problem.
When I try to add my first portlet (developed by me) in the portlet I obtein this error message:
> testPortlet1 is temporarily unavailable.
And in the stacktrace of my IDE I see this error message:
2014-12-19 11:37:55,874 [[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] ERROR commons.CommonsLogger.error(38) - Could not find action
There is no Action mapped for namespace /testPortlet1 and action name startTestPortlet1. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
..............................................................................
..............................................................................
..............................................................................
11:37:55,883 ERROR [PortletServlet:96] javax.portlet.PortletException: Could not find action startTestPortlet1
javax.portlet.PortletException: Could not find action startTestPortlet1
at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.serviceAction(Jsr168Dispatcher.java:454)
at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.render(Jsr168Dispatcher.java:322)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:101)
..............................................................................
..............................................................................
..............................................................................
Caused by: There is no Action mapped for namespace /testPortlet1 and action name startTestPortlet1. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
..............................................................................
..............................................................................
..............................................................................
11:37:55,892 ERROR [jsp:154] There is no Action mapped for namespace /testPortlet1 and action name startTestPortlet1. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
..............................................................................
..............................................................................
..............................................................................
So this is the **structs.xml** section related to my portlet:
<package name="TestPortlet1Package" extends="struts-portlet-default" namespace="/">
<action name="startTestPortlet1" class="TestPortlet1Action" method="startTestPortlet1">
<result name="success">/testPortlet1/testPortlet1.jsp</result>
</action>
</package>
This is my JSP view (definied inside the **\Web\src\main\webapp\testPortlet1\testPortlet1.jsp**):
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
<style>
.portlet-topper#portlet_SliderNewsPortlet_WAR_KMPortlets, .portlet-title#portlet_SliderNewsPortlet_WAR_KMPortlets {
display: none
}
.portlet#portlet_SliderNewsPortlet_WAR_KMPortlets, .portlet-content#portlet_SliderNewsPortlet_WAR_KMPortlets {
border: 0;
margin: 0;
padding: 0;
background: 0;
}
</style>
<hr style="height:1px;border:none;color:#1d8843;background-color:#1d8843;width: 98%" size="4px">
<table width="100%">
<tr>
<td>
<table class="homePortletTitle">
<tr>
<td style="padding-bottom: 0px;"><img src="/km-theme/images/km-icons/section_icon_focus.png"></td>
<th style="">TestPortlet1</th>
<td style="">Hello World Portlet</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<p>Hello World !!!</p>
</td>
</tr>
</table>
And this is my portlet configuration definied into **portlet.xml** file:
<portlet>
<portlet-name>testPortlet1</portlet-name>
<display-name>testPortlet1</display-name>
<portlet-class>org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher</portlet-class>
<init-param>
<name>viewNamespace</name>
<value>/testPortlet1</value>
</init-param>
<init-param>
<name>defaultViewAction</name>
<value>startTestPortlet1</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<portlet-info>
<title>testPortlet1</title>
</portlet-info>
</portlet>
What am I missing? How can I solve this issue? I am going crazy.
Tnx
When I try to add my first portlet (developed by me) in the portlet I obtein this error message:
> testPortlet1 is temporarily unavailable.
And in the stacktrace of my IDE I see this error message:
2014-12-19 11:37:55,874 [[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] ERROR commons.CommonsLogger.error(38) - Could not find action
There is no Action mapped for namespace /testPortlet1 and action name startTestPortlet1. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
..............................................................................
..............................................................................
..............................................................................
11:37:55,883 ERROR [PortletServlet:96] javax.portlet.PortletException: Could not find action startTestPortlet1
javax.portlet.PortletException: Could not find action startTestPortlet1
at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.serviceAction(Jsr168Dispatcher.java:454)
at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.render(Jsr168Dispatcher.java:322)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:101)
..............................................................................
..............................................................................
..............................................................................
Caused by: There is no Action mapped for namespace /testPortlet1 and action name startTestPortlet1. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
..............................................................................
..............................................................................
..............................................................................
11:37:55,892 ERROR [jsp:154] There is no Action mapped for namespace /testPortlet1 and action name startTestPortlet1. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
..............................................................................
..............................................................................
..............................................................................
So this is the **structs.xml** section related to my portlet:
<package name="TestPortlet1Package" extends="struts-portlet-default" namespace="/">
<action name="startTestPortlet1" class="TestPortlet1Action" method="startTestPortlet1">
<result name="success">/testPortlet1/testPortlet1.jsp</result>
</action>
</package>
This is my JSP view (definied inside the **\Web\src\main\webapp\testPortlet1\testPortlet1.jsp**):
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
<style>
.portlet-topper#portlet_SliderNewsPortlet_WAR_KMPortlets, .portlet-title#portlet_SliderNewsPortlet_WAR_KMPortlets {
display: none
}
.portlet#portlet_SliderNewsPortlet_WAR_KMPortlets, .portlet-content#portlet_SliderNewsPortlet_WAR_KMPortlets {
border: 0;
margin: 0;
padding: 0;
background: 0;
}
</style>
<hr style="height:1px;border:none;color:#1d8843;background-color:#1d8843;width: 98%" size="4px">
<table width="100%">
<tr>
<td>
<table class="homePortletTitle">
<tr>
<td style="padding-bottom: 0px;"><img src="/km-theme/images/km-icons/section_icon_focus.png"></td>
<th style="">TestPortlet1</th>
<td style="">Hello World Portlet</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<p>Hello World !!!</p>
</td>
</tr>
</table>
And this is my portlet configuration definied into **portlet.xml** file:
<portlet>
<portlet-name>testPortlet1</portlet-name>
<display-name>testPortlet1</display-name>
<portlet-class>org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher</portlet-class>
<init-param>
<name>viewNamespace</name>
<value>/testPortlet1</value>
</init-param>
<init-param>
<name>defaultViewAction</name>
<value>startTestPortlet1</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<portlet-info>
<title>testPortlet1</title>
</portlet-info>
</portlet>
What am I missing? How can I solve this issue? I am going crazy.
Tnx