Ich möchte eine Map-Eigenschaft für eine Struts2-Aktion aus einer JSP auffüllen. Welches Format haben die Datennamen, die ich verwenden soll? Am Anfang bin ich interessiert an einer Karte < String, String> aber in der Zukunft würde ich interessant sein, um eine Karte < String, DomainClass> wo die DomainClass Eigenschaften eigene hat.Feldnamen für Struts2-Map-Einträge in einer JSP
Antwort
Ich habe eine Aktion, mit einer Eigenschaft wie folgt -
private Map<String,String> assetProps;
...
public Map<String, String> getAssetProps() {
return assetProps;
}
public void setAssetProps(Map<String, String> assetProps) {
this.assetProps = assetProps;
}
Wenn Sie Werte auf der Karte, gibt es grundsätzlich zwei Schritte. Zunächst einmal kann OGNL die Karte nicht instanziieren, also liegt es an Ihnen. In meiner Aktion, ich die herstellbaren-Schnittstelle implementieren, aber es instanziiert, bevor die Lauf ‚public String input()‘ Methode wie folgt -
public class EditAction extends ActionSupport implements Preparable {
...
public void prepare() {
// just satisfying Preparable interface so we can have prepareInput()
}
public void prepareInput() throws Exception {
assetProps = new HashMap<String,String>();
}
Nun wird das Objekt nicht null ist, kann ich Syntax ähnlich wie die Verwendung folgende in der JSP -
Der Iterator zieht eine Reihe von Objekten aus dem Stapel und iteriert darüber. Der wichtige Teil ist der Abschnitt "name =", beachte die doppelt entflochtenen einfachen Anführungszeichen. Wenn die Seite gerendert wird, wird beispielsweise der Name des Eingabeelements - assetProps ['Screen Size']. Wenn die Seite übergeben wird, ist in der Methode "public void execute()" volume AssetProps vollständig ausgefüllt.
Hier ist ein weiteres Code-Snippet, das etwas ähnliches tut, falls es jemandem hilft.
<s:iterator value="storageIds" var="sids">
<s:hidden name="%{'storageIds[\\'' + key +'\\']'}" value="%{#sids.value}"/>
</s:iterator>
Meine Aktion hat ein Map<String,String>
namens storageIds
Wenn eine Karte, Schlüssel und Wert Entschlossenheit auf die Map.Entry
Eigenschaften iterieren.
Versuchen Sie dies. Funktioniert perfekt für mich
<s:iterator value="configMap" id="daa">
<s:hidden name="%{'configMap[\\'' + key +'\\']'}" value="%{#daa.value}" />
</s:iterator>
- 1. Automatisches Einbinden einer JSP in jede JSP
- 2. ändern Feldnamen in einer Liste von Objekten
- 3. Best Practices für Feldnamen in ElasticSearch
- 4. Wildcard-Abfragen in Feldnamen
- 5. Iterieren einer Tabellenzeile in Jsp
- 6. Schienen: Feldnamen
- 7. Definieren einer Klasse in einer JSP
- 8. Wie bekomme ich die Feldnamen einer Datenbanktabelle?
- 9. sqlite Dynamisch Anruf Feldnamen
- 10. versuchen, einen Feldnamen mit einer Variablen zur Laufzeit in EF
- 11. logstash - Dynamische Feldnamen
- 12. Wie können Sie einen Feldnamen in einer MVC-Anwendung anzeigen?
- 13. Logback.groovy LogstashEncoder Ändern Feldnamen
- 14. Entfernen leeren Feldnamen aus Dokument
- 15. Alternative für die Beibehaltung separater Konstanten für Feldnamen
- 16. mysql case insesitive Feldnamen
- 17. Feldnamen aus dtype-Auflistung?
- 18. SQL INSERT-Leistung Feldnamen wegzulassen?
- 19. Variablen als Feldnamen
- 20. java.lang.NumberFormatException: Für Eingabezeichenfolge in JSP Seite
- 21. Include den Inhalt einer Datei in JSP
- 22. Verwendung von request.setAttribute in einer JSP-Seite
- 23. Taglib-Import in einer JSP, wie?
- 24. Importieren einer Klasse in eine JSP-Datei
- 25. Aufruf einer Java-Methode in JSP
- 26. rendering JSP zu einer Zeichenfolge
- 27. Anzeige verschiedener Bilder von einer Aktion in einer JSP
- 28. schnelle Lösung für JSP mit in Eclipse?
- 29. JSP liefert dynamischen Wert für die JSP-Tag-Bibliothek
- 30. ein guter JSP Rahmen für einen Anfang JSP Entwickler
Dank für die Erklärung, das half mir, eine ähnliche Situation zu lösen. Eine Randnotiz, für die Sie eigentlich nicht die Schnittstelle Preparable benötigen, können Sie die Map einfach initialisieren, wenn sie deklariert ist. – shakerlxxv