2017-03-31 2 views
1

J'ai une classe Message.java avec deux variables de même type Location.java appelé origin et destinationStruts 2. s: propriété. Comment obtenir la valeur d'une variable dont le nom est passé en paramètre au jsp?

Message.java

public class Message{ 

    private Location origin; 
    private Location destination; 

//Getters and setters correctly defined 
} 

Location.java

public class Location{ 

private String address;  
} 

MessageAction.java 01 Je souhaite réutiliser du code, j'ai donc créé une JSP commune et transmis le nom de ces variables par paramètre. (Bien sûr, le code est plus complexe, ce n'est un exemple de base, il me aide vraiment à réutiliser le code)

message.jsp

<s:push value="message"> 
    <s:include value="/jsp/location.jsp"> 
     <s:param name="variableName" value="'origin'" /> 
    </s:include> 
    <s:include value="/jsp/location.jsp"> 
     <s:param name="variableName" value="'destination'" /> 
    </s:include> 
</push> 

voilà le problème, je Je ne sais pas comment montrer la valeur de %{variableName}.address. J'ai essayé plusieurs combinaisons et googlé un moment mais je n'ai rien trouvé.

location.jsp

<s:set name="variableName">${param.variableName}</s:set> 
<s:property value="%{%{variableName}.address}" /> 

Si j'écris directement les noms des variables, je reçois leur valeur correctement, donc l'action est mise en les correctement.

<s:property value="origin.address" /> 
<s:property value="destination.address" /> 
+0

Voir http://stackoverflow.com/q/16712395/1700321. –

Répondre

0

Ceci est juste mal expression OGNL

%{%{variableName}.address} 

si vous souhaitez réutiliser JSP comme templete vous devez utiliser l'expression de OGNL valide. Néanmoins, le nom du paramètre de passage est énorme puisque vous aurez un OGNL complexe pour retourner la valeur de ce nom de paramètre.

Vous devez également savoir que

Les paramètres sont passés comme paramètres de la requête, donc utiliser la notation ${param.ParamName} pour y accéder. N'utilisez pas la balise property pour accéder aux paramètres des fichiers inclus.