2010-05-24 5 views
0

Je veux utiliser deux entretoises Taglib dans l'autre, quelque chose comme ceci:L'utilisation de deux taglibs Struts2 dans l'autre

< s:property value="url-< s:property value="number"/>"/> 

ou

< s:property value="url-${number}"/> 

mais je suis l'erreur suivante dans le second :

Selon la directive TLD ou la directive d'attribut dans le fichier de balise, les valeurs d'attribut n'acceptent aucune expression.

Quelqu'un a une solution?

Merci

+0

Vous misstyped "propriétés" au lieu de « propriété ", droite? – leonbloy

+0

Oui, merci pour votre indice. –

Répondre

0

La solution était trop facile! Comme notre ami leonbloy l'a dit, le nombre est maintenant dans la pile de valeur quand il est généré dans un itérateur. donc je devrais écrire son nom:

<s:property value="url-number"/> 
0

Si la valeur « number » est fixée (au moment de la génération de jsp, par exemple, il n'est pas réglé dans le jsp, ou modifiés dans un iterator), vous feriez mieux de refactoring à une méthode dans votre action. Par exemple, si le "number" est une propriété dans votre action:

public String getUrlWithNumber() { 
    return "url-" + String.valueOf(getNumber()); 
    } 

    <s:property value="urlWithNumber"/> 

ailleurs, vous pouvez essayer quelque chose comme (non testé)

public String buildUrlWithNumber(int number) { 
    return "url-" + String.valueOf(number); 
    } 


    <s:property value="buildUrlWithNumber(${number})"/> 

ou quelque chose comme ça.

+0

Malheureusement, le nombre est généré dans un itérateur. et quand j'utilise quelque chose comme votre deuxième solution (comme je l'ai écrit dans ma question), j'ai cette erreur: "Selon la directive TLD ou l'attribut dans le fichier de balises, les valeurs d'attributs n'acceptent aucune expression." –

+0

Ah, OGNL est une douleur ... Vous avez le "nombre" disponible dans la pile de valeur, de sorte que '' l'affiche? Ensuite, vous pourriez essayer avec 's: property value =" buildUrlWithNumber (% {number}) "/>' (ou #number, je ne m'en souviens jamais) – leonbloy

2

vous pouvez également utiliser

<s:property value="'url-'+'%{number}'"/> 

Struts accepte les expressions OGNL dans le format% {yourAttribute}