2010-11-24 15 views
0

Je suis en train de refactoriser un ancien code qui utilise Struts 1 (No flames please), et j'ai du mal à retrouver un paramètre que j'ai défini dans ma classe Action. Voici le code que j'utilise dans mon jsp:Comment récupérer une variable étendue de demande en utilisant JSTL sur Struts 1

Je mis la submissionFailure variable dans la classe d'action, mais lorsque je tente

<c:out value="${requestScope[cardHolderZipCode]}" />

ou

<c:out value="${requestScope.property[submissionFailure]}" />

Cependant, rien n'est jamais sorti.

je mets le code suivant dans mon JSP, et je peux voir la valeur de la carte requestScope:

<b><i>Request Scope</i></b><br/> <c:forEach items="${requestScope}" varStatus="status" var="parameter"> <c:out value="${parameter}"/><br/><br/>
</c:forEach>

Mais je ne peux toujours pas sortir la variable. Quelqu'un peut-il m'aider ou est-ce que je viens d'avoir un moment I-D-10-T?

Répondre

1

C'était un moment I-D-10-T de ma part. J'essayais trop fort. Voici le code que j'ai fini par utiliser:

<c:choose> 
    <c:when test="${submissionFailure}"> 
     <%-- Do something --%> 
    </c:when> 
    <c:otherwise> 
     <%-- Do something else --%> 
    </c:otherwise> 
</c:choose> 
1

Il se peut que votre classe Action ne soit pas un JavaBean (c'est-à-dire aucun getter dans le champ submissionFailure). From the Struts1 reference:

D'abord, votre haricot ActionForm doit avoir un constructeur zéro arguments. Ceci est requis car le framework doit être capable de créer dynamiquement de nouvelles instances de votre classe de bean formulaire, en ne connaissant que le nom de la classe. Ce n'est pas une restriction onéreuse, cependant, car le framework va également remplir les propriétés de votre formulaire bean (de la demande paramètres) pour vous.

En second lieu, les champs de votre formulaire haricot sont mis à la disposition par le cadre fournissant getter public et poseur méthodes qui suivent la conception de nommage modèles décrits dans les JavaBeans Spécification. Pour la plupart des utilisateurs, ce signifie en utilisant l'idiome suivant pour chacune des propriétés de votre forme haricot:

private {type} fieldName; 

public {type} getFieldName() { 
    return (this.fieldName); 
} 
public void setFieldName({type} fieldName) { 
    this.fieldName = fieldName; 
} 

Si cela ne fonctionne pas, alors vous devriez envisager d'afficher les parties pertinentes de votre classe d'action dans votre question pour permettre un meilleur débogage.