2010-11-10 5 views
0

Je donne les résultats suivants:html: les options appels sont avant set -> pointeur NULL

<html:select property="myObject.value"> 
     <html:options property='myMap(someKey)'/> 
    </html:select> 

map(someKey) est défini dans l'action. J'ai aussi créé ces méthodes sous la forme:

public void setMyMap(final Map<String, Collection<String>> map) 
{ 
    myMap = map; 
} 

public Map<String, Collection<String>> getMyMap() 
{ 
    return myMap; 
} 

Cela semble presque fonctionner, mais de temps en temps myMap(someKey) est avant la Action accédé appropriée est même frappé, conduisant à des pointeurs nuls. Qu'est-ce que je fais de mal, ici?

Edit:
Si j'utilise un LazyMap pour contourner ce problème, j'éviter des pointeurs nuls jusqu'à ce que l'action définit la forme vers le haut. J'aimerais quand même savoir pourquoi cela se passe, cependant.

Répondre

0

Utilisez un LazyMap ou effectuez une mise à niveau vers Struts 2/3, afin que quelqu'un puisse réellement vous aider.

0

Comment avez-vous déterminé l'ordre dans lequel l'accès se produit par rapport au tir de l'action? Puisque setMyMap stocke simplement une référence, une possibilité est que l'appelant s'exécute sur un thread différent et modifie la carte après l'avoir définie.