Bonjour,
je souhaite fournir à des développeurs un modèle de portlet, avec des actions déjà implémentée que leurs portlets devront proposer.
Je pensais donc leur filer ma propre classe abstraite (MyGenericPortlet) qui héritera de GenericPortlet et dont ils devront hériter. Ce qui me donne en gros ceci :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 abstract class MyGenericPortlet extends GenericPortlet { // [...] public void doGenericAction(RenderRequest request, RenderResponse response) throws PortletException, java.io.IOException { addToBasketView.include(request, response); } }
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class MyPortlet extends MyGenericPortlet { public void doView( RenderRequest request, RenderResponse response ) throws PortletException, IOException { } protected void doHelp( RenderRequest request, RenderResponse response ) throws PortletException, IOException { } }
Cela compile bien dans Eclipse, le build Maven est OK, par contre au déploiement dans Tomcat/Pluto, voici ce que j'obtiens :
J'utilise la portlet-api 1.0. "portlet-class" dans portlet.xml référence MyPortlet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 java.lang.ClassCastException: com.ibm.MyPortlet cannot be cast to javax.portlet.Portlet at org.apache.pluto.container.driver.PortletServlet.attemptRegistration(PortletServlet.java:210) at org.apache.pluto.container.driver.PortletServlet$1.run(PortletServlet.java:166) at java.util.TimerThread.mainLoop(Timer.java:512) at java.util.TimerThread.run(Timer.java:462)
Donc deux questions :
- est-ce que la voie que je prends (intercaler une classe entre GenericPortlet et celle de chaque portlet) vous parait la mieux adaptée à ce que je veux faire ?
- pourquoi est-ce que ça ne fonctionne pas, qu'est-ce que c'est que cette erreur de Cast ? J'ai bien cherché sur le net mais franchement, je ne trouve pas grand chose.
Et si je fait bien hériter MyPortlet directement de GenericPortlet, ça fonctionne.
Merci d'avance![]()
Partager