Pàgina d'inici » Programació » Apache Struts 2

Category Archives: Apache Struts 2

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>

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ó

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

%d bloggers like this: