Google Website Translator Gadget

Mostrando entradas con la etiqueta struts2. Mostrar todas las entradas
Mostrando entradas con la etiqueta struts2. Mostrar todas las entradas

martes, 19 de febrero de 2013

Struts2: Error setting expression + target is null

Al programar, especialment si ho fas sense gaire temps disponible, pots trobar-te amb un desagradable error com el següent:
Error setting expression '...field....' ...
target is null for setProperty( ...


Error message
Error message
    


QUE POTS FER?
1. Verificar que la class dispossa de funcions set/get del Bean
La Action class ha de tenir la funció set i get del Bean.
Revisa la estructura i funcionament de la funció.
Al exemple d'abaix es la funció  setGrupaprovadors
2. Verificar que la funció está descrita al JSP
<s:property value="grupaprovadors....




EXEMPLE: (struts.xml, class, JSP)
struts.xml
<action name="Grup01pas1"
class="com.test.action.G01GrupAction"
method="Afegirgrupap">

<result name="input">gp01.jsp</result>
<result name="error">gp02.jsp</result>
</action>


Class:

JSP:
<
s:form action="Grup01pas1"
method="post"> Introdueix ID:<s:property value="grupaprovadors.IDGrup" />
</s:form>






viernes, 2 de noviembre de 2012

Struts2: The default expression... not match a property

Al programar una pàgina JSP per a Struts2 pots cometre alguns errors que només apareixen als logs.

Un d'aquests errors que apareixen al log es el següent:
07:17:41,632 WARN org.apache.struts2.util.TextProviderHelper.warn:56 - The default value expression 'Example:Field required.' was evaluated and did not match a property. The literal value 'Example:Field required.' will be used.

Veiem un exemple del codi JSP que genera el error:
<s:text name="property_code_800" />:<s:text name="peticiocarpeta.origPath" />


Que està passant aqui?
A la pàgina es mostrarà el text literal correcte, malgrat això hi ha un error amagat i està produït per l'ús incorrecte de la instrucció <s:text name="peticiocarpeta.origPath" />

Aquesta instrucció demana un literal que serà localitzat en el fitxer de properties, com en el cas del property_code_800
El literal peticiocarpeat.origPath no es pot trobar ja que el que està realment rebent es el text substituït.

Solució:
Si el que vols es emetre un text que prové d'un Bean cal utilitzar la instrucció: <s:property

<s:text name="property_code_800" />:<s:property value="peticiocarpeta.origPath" />




Informació addicional:
http://struts.apache.org/2.3.4/docs/text.html
http://struts.apache.org/2.3.4/docs/property.html

miércoles, 31 de octubre de 2012

Struts2: Avaluació d'objecte null

Al programar amb Struts2 et pots trobar en la necessitat de generar una part del codi JSP només quan el objecte encara no esta instanciat.



Com funciona? Millor mirem-ho amb un exemple:

<s:if test="%{peticiocarpeta==null || peticiocarpeta.origPath==""}">
... do something

</s:if>

Suposem que peticiocarpeta es el meu objecte Bean i que origPath es un dels camps que vull avaluar.
Amb la primera condició verifico si l'objecte ha estat instanciat en algun moment.
amb la segona condició verifico si un camp concret està o no buit.

miércoles, 24 de octubre de 2012

Struts2: Avaluació condicional composada

Al programar amb Struts2 et pots trobar en la necessitat de generar una part del codi JSP en funció de uns resultats.



Com funciona la combinació de expresions? Millor mirem-ho amb un exemple:

<s:if test="%{peticiocarpeta==null || peticiocarpeta.origPath==""}">
... do something

</s:if>

si volem afegir un else només cal continuar amb <s:else></s:else>
<s:else>
...do something alternative ...

</s:else>

Punts a tenir en compte:
- El condicional OR es igual que en Java ||.
- Cal tancar el if (</s:if>) abans de afegir el else (<s:else></s:else>).

Més informació i exemples interessants:
Struts2: Why won't the 'if' tag evaluate a one char string
aoiblog.com: struts2 if else elseif

domingo, 21 de octubre de 2012

Struts2: tag.getValidators("${tagName}") error

During the execution (and if you have the debug mode activate) you are getting an error similar to:


----------
==> list tag.getValidators("${tagName}") as validator [on line 46, column 9 in template/xhtml/form-close-validate.ftl]
in include "/${parameters.templateDir}/xhtml/form-close-validate.ftl" [on line 25, column 1 in template/xhtml/form-close.ftl]
----------
...several lines...
Caused by: java.lang.NullPointerException
......
I've tried to found the real cause unsucessfully but finally I've follow the next steps to solve the issue:
The -validation.xml file is with the .java class 
s
The message in the -validation.xml file is properly set ${getText("800_u01ra_error_001")}
My solution has been:
remove validate="true" from the form
s:form action="Peticio01pas1"
 method="post" name="selectfile">

For complete information about struts2 validation you could visit the following link:
http://struts.apache.org/2.3.4.1/docs/validation.html

sábado, 20 de octubre de 2012

Struts2: Ubicació dels DTD

Struts2 fa ús de DTD i per defecte els fitxers els carrega via http des de

Si no tens connexió a Internet perque el teu servidor esta a una xarxa interna i aillada els pots descarregar i utilitzar localment.

http://struts.apache.org/dtds/


lunes, 24 de septiembre de 2012

Strust2 Error: Dispatcher initialization failed

Estas programant tranquil·lament quan de cop obtens algun d'aquests errors al inicialitzar el servidor:

ERROR org.apache.struts2.dispatcher.Dispatcher.error
Dispatcher initialization failed
Unable to load configuration. - action -



Segueix aquests passos:
  1. Revisa si has renombrat alguna clase. Es posible que el servidor estigues arrencat?
  2. Si es així revisa el fitxer struts.xml i verifica que les actions tenen el nom de la classe actualitzada.
  3. Revisa el fitxer de errors. Hauries de trobar una referència a la classe que la fa fallar.
  4. Si has corregit tots els errors anteriors i continua fallant es possible que el servidor estigues arrencat quan vas fer el renombrat de la classe. Tanca Eclipse i torna-ho a arrencar.

Seguint aquests passos t'hauria de funcionar de nou.... Sort!


Verificat amb:
Eclipse + struts 2.3.4 + Tomcat 7.0.29

miércoles, 19 de septiembre de 2012

Struts2: sx:autocompleter Unknow tag error

Al programar amb Struts2 pots fer ús d'una meravellosa llibreria i tags per a fer funcions AJAX.

Un d'aquests tags es sx:autocompleter que permet crear combo-box que es s'omplen amb les dades que carregues des de la base de dades i permet fer "suggeriments".

Més clar?
Una imatge!


Per a programar et pot sorprendre un error: Unknown tag (sx:autocompleter).


Verifica que tens al JSP la següent capçelera:
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>

I que a la llibreria tens els .jar requerits: struts2-dojo-plugin-2.3.4.jar

Verificat amb: struts 2.3.4 i Eclipse Juno

Enllaços relacionats:
http://struts.apache.org/2.3.4/docs/autocompleter.html

sábado, 1 de septiembre de 2012

Struts2: Documentació de les etiquetes (tags)

http://struts.apache.org/ es un framework lliure (free open-source) per a crear aplicacions web en Java.

Publica 2 branques (Struts i Struts2) amb actualitzacions amb certa periodicitat.
Quan comences es complicat saber que es important i que no.




El Tutorial bàsichttp://struts.apache.org/2.3.4/docs/getting-started.html

Si acabes de començar, per a mi, es el millor punt per iniciar-te pas a pas.
Instal·lat un Eclipse, i escriu-te els exemples pas a pas.
Val la pena!
Tag Referenceshttp://struts.apache.org/2.3.4/docs/tag-reference.html

Permet consultar com generar correctament les etiquetes (tags) amb el detall dels paràmetres.
Per exemple una etiqueta submit te 44 paràmetres que el poden modificar.


lunes, 20 de agosto de 2012

Struts2: Error: Unknown filter name Struts2

Al generar manualment el fitxer web.xml pots trobar un error
java.lang.IllegalArgumentException: Filter mapping specifies an unknown filter name struts2

semblant al de la imatge:
Unknown filter name Struts2
Això es degut a un error en l'ordre de les instruccions filter.  L'ordre correcte es: filter i després filter-mapping tal com pots veure al exemple:
Espero que us serveixi!

martes, 20 de marzo de 2012

Struts2: Avaluant "if"

Després de veure uns quants exemples i confirmar que tothom es copia exemples trivials uns dels altres, he decidit crear el meu propi exemple.
- Com avaluar el resultat de una action i decidir que fer. La clau trivial es trova en...

<s:if test='%{AksForValue!=""}'>

On AskForValue es el public String getAksForValue() de torn...


I problema solventat !!!!

viernes, 24 de febrero de 2012

struts2, eclipse i les CSS stylesheet

Si detectes que les CSS stylesheet no s'apliquen en el teu struts2 fes el següent:

<link href="${pageContext.request.contextPath}/AppPublic/MyCSS.css" type="text/css" rel="Stylesheet">