portlet xml looks ok:
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
</supports>
this defines that your portlet supports the VIEW and the EDIT modes for
the text/html mime type. the fact that SupportsDD.portletModes only
contains text/html is because this is the only mime type you've
declared. That said, edit should work fine and I'm not sure why it's
not -- unless you're also setting the content type to something other
than text/html.
Can you look at your debugger and tell me if text/html is associated
with both of the defined modes or if the EDIT is absent?
Thanks,
David
Patrick Huber wrote:
Hi
I'm currently working on a test portlet and trying to get the edit
mode working. My portlet.xml appears to be fine.
The flow is this:
- i click on an action url
- processAction sets the portlet mode to edit
- i get an error:
javax.portlet.PortletModeException: Can't set this PortletMode
org.apache.pluto.core.impl.ActionResponseImpl.setPortletMode(ActionResponseImpl.java:108)
net.swisstech.portlet.test.jsr168.JSR168Portlet.processAction(JSR168Portlet.java:59)
org.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:170)
org.apache.pluto.core.PortletServlet.doGet(PortletServlet.java:113)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.pluto.core.PortletInvoker.invoke(PortletInvoker.java:156)
org.apache.pluto.core.PortletInvoker.action(PortletInvoker.java:84)
org.apache.pluto.core.PortletContainerImpl.doAction(PortletContainerImpl.java:179)
org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:102)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
So, I started the debugger to find out some more about this error and got this:
- ActionResponseImpl checks wether a requested mode is in the list of
defined modes from the portlet.xml file. If this is not the case, the
above exception is thrown.
- In my case, SupportsDD.portletModes only contains "text/html"
- After some more debugging, I found
AbstractCastorDescriptorService.readInternal. The unmarshalled object
"object" also only contains the mime-type.
- I've had a look at castor-portlet-xml-mapping.xml but can't tell if
it's correct since I've never used castor myself.
So is there something wrong with my portlet.xml (I think it's fine /
see attachment)? Or is it the castor config?
Thanks
Patrick
--
"I love deadlines. I like the whooshing sound they make as they fly
by." -- Douglas Adams
------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app
xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd
http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
<portlet>
<description>A JSR168 Test Portlet</description>
<portlet-name>JSR168Portlet</portlet-name>
<display-name>JSR168Portlet</display-name>
<portlet-class>net.swisstech.portlet.test.jsr168.JSR168Portlet</portlet-class>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<portlet-info>
<title>The JSR168Portlet</title>
<short-title>JSR168 Portlet</short-title>
<keywords>JSR168, Portlet, Test</keywords>
</portlet-info>
</portlet>
</portlet-app>