2010-11-24 8 views
0

Ich überarbeite einige Legacy-Code, der Struts 1 (keine Flammen bitte) verwendet, und es ist schwierig, einen Parameter in meiner Action-Klasse abrufen. Hier ist der Code, den ich in meiner jsp mit:Wie erhalte ich eine Request-Scoped-Variable mit JSTL auf Struts 1

habe ich die Variable submissionFailure in der Action-Klasse, aber wenn ich versuche

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

oder

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

Es wird jedoch nie etwas ausgegeben.

Ich habe den folgenden Code in meinen JSP, und ich kann den Wert in der Karte sehen request:

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

Aber ich kann immer noch nicht die Variable aus. Kann mir jemand helfen oder habe ich gerade einen I-D-10-T-Moment?

Antwort

1

Es war ein I-D-10-T-Moment von meiner Seite. Ich habe es zu sehr versucht. Hier ist der Code, den ich am Ende verwendet habe:

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

Es könnte sein, dass Ihre Action-Klasse kein JavaBean ist (d. H. Kein Getter im Feld submissionFailure). From the Struts1 reference:

Zunächst müssen Sie Ihre Action Bohne haben eine Null-Argumente Konstruktor. Dies ist erforderlich, da das Framework in der Lage sein muss, dynamisch neue Instanzen Ihrer Formular-Bean-Klasse zu erstellen, während Sie nur den Klassennamen kennen. Dies ist keine beschwerliche Einschränkung, jedoch, weil das Framework auch die Eigenschaften Ihres Formulars beans (aus der Anforderung Parameter) für Sie ausfüllen.

Zweitens sind die Felder des Formulars bean werden an den Rahmen von öffentlichen Getter und Setter-Methoden Versorgung zur Verfügung gestellt, dass die Benennung Design Muster beschrieben in den Java Beans Spezifikation folgen. Für die meisten Anwender bedeutet, dass folgendes Idiom für jede Ihrer Form-Bean-Eigenschaften mit:

private {type} fieldName; 

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

Wenn dies nicht hilft, dann sollten Sie die Buchung der relevanten Teile Ihrer Action-Klasse betrachten in Ihre Frage, um besseres Debuggen zu ermöglichen.