Je souhaite remplir une propriété de carte sur une action Struts2 à partir d'une JSP. Quel est le format des noms de données que je devrais utiliser? Initialement, je suis intéressé à remplir une carte < String, String> mais dans l'avenir, je serais intéressant de remplir une carte String, DomainClass> où la DomainClass a ses propres propriétés.Noms de champs pour les entrées de carte Struts2 dans un JSP
Répondre
J'ai une action, avec une propriété comme suit -
private Map<String,String> assetProps;
...
public Map<String, String> getAssetProps() {
return assetProps;
}
public void setAssetProps(Map<String, String> assetProps) {
this.assetProps = assetProps;
}
Pour définir des valeurs sur la carte, il y a essentiellement deux étapes. Tout d'abord, OGNL ne peut pas instancier la carte, donc c'est à vous de décider. Dans mon action, j'implémentent l'interface préparable, mais instancier avant d'exécuter la méthode «public entrée de chaîne() comme suit: -
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>();
}
Maintenant, l'objet est non nul, je peux utiliser une syntaxe similaire à la suivant les JSP -
<s:iterator value="asset.properties" var="prop">
<sjx:textfield name="%{'assetProps[\\'' +#prop.propName +'\\']'}"
value="%{#prop.propValue}"
label="%{#prop.propName}" size="25"/>
</s:iterator>
l'itérateur tire un ensemble d'objets de la pile et une itération sur elle. La partie importante est la section "name =", notez les guillemets doubles à échappement double. Ainsi, lorsque la page s'affiche, le nom de l'élément d'entrée devient (par exemple) - assetProps ['Screen Size']. Lorsque la page est soumise, à l'intérieur de la méthode "public void execute()", assetProps est entièrement rempli.
Voici un autre extrait de code qui fait quelque chose de similaire, au cas où cela aiderait quelqu'un.
<s:iterator value="storageIds" var="sids">
<s:hidden name="%{'storageIds[\\'' + key +'\\']'}" value="%{#sids.value}"/>
</s:iterator>
Mon action a un nom Map<String,String>
storageIds
Lorsque itérer une carte, détermination clé et la valeur des propriétés Map.Entry
.
Essayez ceci. Travailler parfaitement pour moi
<s:iterator value="configMap" id="daa">
<s:hidden name="%{'configMap[\\'' + key +'\\']'}" value="%{#daa.value}" />
</s:iterator>
- 1. Img problème d'intégration dans Struts2 jsp page
- 2. problème dans plusieurs validation.xml pour une seule action dans struts2
- 3. Nom du plugin drupal qui donne des popups pour les entrées de champs
- 4. Problème OptionTransferSelect dans Struts2
- 5. Comment accéder aux objets implicites jsp/servlet dans les actions Struts2?
- 6. multiset, carte et carte de hachage complexité
- 7. JavaScript: Dynamic Noms des champs
- 8. Obtenir de la valeur sans créer d'objet dans struts2
- 9. Problème dans hide et show de combobox dans struts2
- 10. Quel en-tête HTTP utiliser pour définir les noms des champs de formulaire (multipart/form-data)
- 11. Comment créer un système de carte efficace?
- 12. Importation de JavaScript dans les balises JSP
- 13. Quelle est la commande SQL pour retourner les noms de champs d'une table?
- 14. Struts2: valeur d'Action - DAO (base de données) - VO - View (jsp). Suggérer?
- 15. Comment struts 2 inclut-il les fichiers javascript dans un fichier jsp de leur fichier struts.jar?
- 16. comparant les listes et de trouver des entrées uniques
- 17. JSP dans les scripts erreur de syntaxe
- 18. Comment remplir les valeurs de XML dans JSP?
- 19. téléchargement de fichier en utilisant <s:file> dans Struts2
- 20. comment créer une structure Delphi 4 à la carte les noms de colonnes en XLS à des noms de colonne dans SQL
- 21. Énumération dans un JSP
- 22. Comment faire pour que les attributs dynamiques fonctionnent dans les fichiers de balises JSP?
- 23. struts2 demande de codage
- 24. entrées uniques dans un tableau
- 25. Non compris les noms de champs dans la validation des messages d'erreur
- 26. Supprimer les événements de clavier pour les champs de saisie
- 27. struts2 fileupload taille de fichier maximale
- 28. struts2: accéder aux getters de la classe action en jsp sans créer d'objet
- 29. Comment puis-je obtenir les noms de champs d'une table de base de données?
- 30. Utilisation des accents à la suite des noms de champs
Merci pour l'explication, cela m'a aidé à résoudre une situation similaire. D'un côté, vous n'avez pas vraiment besoin de l'interface Preparable pour cela, vous pouvez juste initialiser la carte quand elle est déclarée. – shakerlxxv