2016-08-20 3 views
0

Ich habe ein Problem mit einem Struts2 2.3.28 J2EE Webapp eingesetzt und läuft in Apache Tomcat 8. Ich habe eine Datei JSP, in dem eine Form vorliegt, und es enthält ein Textfeld mit einem gewissen Namen:Struts2 ist nicht die Abbildung richtig von JSP textfield zu Action-Klasse

classificazioni.jsp:

<s:form action="editCategorie" > 
<s:textfield label="Nome" name="namedCat" value="ciao"/> 
<!-- 
    <s:textfield label="Nome" name="catBean.namedCat" value="ciao"/> 
--> 

... 

ich dieses Textfeld Wert in die jeweilige ActionClass zugreifen möchten, in dem ich der Unterkunft Erklärung und Getter und Setter zur Verfügung gestellt:

EditCategorie. Java:

Ich weiß, dass auf diese Weise die Webapp ordnungsgemäß funktionieren und den Textfeldname NamedCat drucken, wenn die Anzeige Methode aufgerufen wird. Hier sind meine struts.xml interessanten Teile:

<interceptors> 
    <interceptor-stack name="mystack"> 
     <interceptor-ref name="defaultStack" /> 
    </interceptor-stack> 
</interceptors> 

<action name="editCategorie" class="it.unisalento.se.actions.EditCategorie"> 
     <interceptor-ref name="mystack"/> 
     <result name="success" type="tiles">classificazioni</result> 
    </action> 

    <action name="showCategorie" class="it.unisalento.se.actions.EditCategorie" method="display"> 
     <interceptor-ref name="mystack"/> 
     <result name="none" type="tiles">classificazioni</result> 
    </action> 

Ich habe gerade zwei verschiedene Ansätze ausprobiert, wie Sie den Code bemerkt habe, zu lesen, aber wenn ich versuche, die namedCat in EditCategorie der Anzeigeverfahren der Konsole zeigt "drucken null‘, während mit dem Bean Ansatz, trotz ich weiß Struts2 automatisch die Bean-Klasse für dich mit dem richtigen gefüllten Attribute instanziiert sollte dies nicht den Fall und offensichtlich, wenn ich versuche, auf die namedCat Eigenschaft der catBean Instanz zugreifen ich bekommen NullPointerException.

Schließlich ist dies auch die CatBean.java Klasse:

public CatBean() 
{ 

} 

private String namedCat; 

public String getNamedCat() { 
    return namedCat; 
} 

public void setNamedCat(String namedCat) { 
    this.namedCat = namedCat; 
} 

ich viele Male hier gelesen habe, dass der Haupt Struts2 Vorteil ist die Verwendung von direkter Servlets Logik zu vermeiden, und auch habe ich hier gelesen, dass diese zwei Ansätze sollten funktionieren. Ich weiß, dass ich auch einen ModelDriven-Ansatz verwenden könnte (das funktioniert perfekt in anderen Aktionen), aber ich muss mich mit parametrischen Textfeldern beschäftigen, also ist das nicht der Fall.

Antwort

0

Struts 2 Aktionen pro Anforderung instanziiert.

Es gibt keine Daten in die neu instanziiert Aktion, also nichts anzuzeigen, wenn Sie drücken Sie die showCategorie URL. Wenn Sie den Wert anhalten wollen würden Sie müssen es irgendwo zu halten, zum Beispiel Datenbank, Sitzung, Anwendung usw.

Verwandte Themen