JAVA, Liferay, Liferay 5, Liferay 6, Struts, Struts Portlet

[Liferay Strus Portlet] java.lang.NoSuchMethodException: No such accessible method: addFormBeanConfig()

Nel momento in cui ho voluto replicare la “hello-strust-portlet” di liferay su:

 

  • ide: netbeans 7
  • server: liferay 5.2.3 tomcat 6
  • framework: struts portlet 1.x
Mi sono trovato con questo problema che mi ha dato non poche rogne:
15:03:12,960 ERROR [ActionServlet:768] Parsing error processing resource path /WEB-INF/struts-config.xml
java.lang.NoSuchMethodException: No such accessible method: addFormBeanConfig() on object: org.apache.struts.config.impl.ModuleConfigImpl
	at org.apache.commons.digester.Digester.createSAXException(Digester.java:3181)
	at org.apache.commons.digester.Digester.createSAXException(Digester.java:3207)
	at org.apache.commons.digester.Digester.endElement(Digester.java:1225)
	at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
I passi da eseguire sono molto semplici:
  1. fermare il server;
  2. eliminare la portlet che si vuole deployare;
  3. cambiare il file liferay-plugin-package.properties cancellando nella voce “portal-dependency-jars” ogni riferimento a struts.jar;
  4. rieseguire il deploy della portlet, ed il gioco è fatto.
Annunci
JAVA, Struts

[Struts 1.2 Portlet] Multibox reset problemi quando non si seleziona nessun elemento.

Quando si ha la situazione in qui si ha il seguente codice:

<html:multibox name="perlaForm"
property="arrayIstituti"
value='${rib.idRilevazioneIstituto}'
tabindex='<%=String.valueOf(tabIndex++) %>'
styleId="id:radio_${i}"/>

Dove il perlaForm è un form che viene tenuto in sessione.

Se nella jsp, ho selezionato dei valori dei checkbox, quando torno indietro e non seleziono nulla, STRUTS non aggiorna l’array di selezione con un array vuoto, ma ben si mantiene i dati nella sessione, rendendo i dati al suo interno inconsistenti.

Per evitare questo problema bisogne resettare l’array della multibox manualmente;

form.setArrayIstituti(null);