Les cases à cocher sont beaucoup utilisées dans le développement Web. Maintenant, nous utilisons l'étiquette de case de Struts2 pour mettre en œuvre certains problèmes que nous rencontrons souvent en développement.
Jetons un coup d'œil aux propriétés de cette étiquette:
Remarque: ListKey est équivalent à l'attribut de valeur dans HTML. Cette valeur est vraiment ce que nous voulons utiliser en arrière-plan lors de l'interaction avec l'arrière-plan; ListValue n'est qu'un affichage du contenu.
L'utilisateur a sélectionné son cours préféré et doit maintenant modifier le cours que vous avez sélectionné, passer à l'interface de modification, puis faire écho au cours sélectionné.
L'utilisateur a sélectionné l'interface de cours:
Cliquez sur le bouton et entrez l'interface de modification du cours:
Remarque: Dans l'interface de modification, vous devez faire écho à la sélection initiale de l'utilisateur.
L'utilisateur a sélectionné l'interface de cours:
<body> Votre cours: <form action = "checkboxAction_test.action" Method = "Post"> <S: checkboxList list = "{'java', '. net', 'php', 'c ++'}" name = "cours" /> </br> <body>Code d'action:
classe publique CheckboxAction étend ActionSupport {private static final long SerialVersionUID = 1l; / * le cours sélectionné par l'utilisateur (chaîne, besoin de supprimer des espaces) * / Private String Courses. être supprimé de cette manière, TRIM () ne fonctionne pas] * / string Courstrs = this.Courses.replaceAll ("", ""); / * Définissez une collection pour stocker les cours sélectionnés par l'utilisateur dans la collection * / list <String> userRourses = New ArrayList <string> (); / * Travel * / For (String Str: COURSTR.Split (",")) {userloses.add (str);} / * Enregistrez les cours sélectionnés par l'utilisateur dans le contexte OGNL * / ActionContext.getContext (). ArrayList <string> (); cous.add ("java"); cous.add (". Net"); cous.add ("php"); cous.add ("c ++"); / * enregistrer tous les cours dans le contexte ognl * / actionContext.getContext ().Modifiez l'interface:
<body> Le cours que vous avez sélectionné est: <S: CheckboxList name = "Cours" list = "# cous" value = "# userRourses" /> </ody>
Remarque: Dans l'interface de modification, il est très simple d'atteindre l'écho du résultat. De plus, nous n'avons besoin que du nom d'attribut # pour obtenir les valeurs de liste et de valeur, car nous avons déjà placé l'objet dans l'actionContext, c'est-à-dire le contexte OgnlContext dans l'action.
Ici, nous utilisons un cas similaire pour nous rapprocher de l'environnement de développement de la simulation:
L'utilisateur sélectionne son idole (un objet Javabean), puis saute à l'interface de modification pour le modifier, et fait écho aux données dans l'interface de modification.
L'utilisateur a sélectionné l'interface idol:
Modifier l'interface (pour implémenter l'écho de données)
L'utilisateur a sélectionné l'interface idol:
<body> Votre idol: <formulaire Action = "CheckboxListAction.Action" Method = "Post"> <S: CheckboxList list = "# {1: 'Deng Xiaoping', 2: 'xi Jinping', 3: 'Hu jintao', 4: 'li keqiang'}" name = "ids" listkey = "key" listvalue = "value" /> </br> <pow type = "key" listvalue = "value" /> </br> <) Vous voulez modifier "/> </ form> </ody Remarque: Liste est une collection de cartes créées par OGNL. ListKey équivaut à la valeur de valeur réelle du formulaire soumis. Nous passons la clé de carte à l'arrière-plan pour le traitement.
Objet Javabean:
classe publique User {/ * utilisateur ID * / entier privé uid; / * nom d'utilisateur * / chaîne privée uname; / * constructeur sans argument * / utilisateur public () {} / * constructeur * / utilisateur public (entier uid, string uname) {this.uid = uid; this.uname = uname {this.uid = uid;} public String getUname () {return uname;} public void setuname (string uname) {this.uname = uname;}}Code d'action:
classe publique CheckboxListAction étend ActionSUpport {private static final long SerialVersionUID = 1L; / * Collection idol * / Liste privée <User> Utilisateurs; / * ID ID String * / Private String IDS (Liste publique <User> GetUsers () {Return Userst;} String SetUser (List> Users; ids) {this.ids = ids;} public String execute () {/ * simule pour obtenir toutes les idoles de la base de données, les transmettre à la réception pour afficher, puis les comparer avec le choix de l'utilisateur * / users = new ArrayList <serving> (); users.add (nouvel utilisateur (1, "Deng Xiaoping")); Users.add (new user (2, "Xi jinping"); Utilisateur (3, "Hu Jintao")); users.add (nouvel utilisateur (4, "li keqiang")); / * Enregistrer dans OGNL Context Context * / ActionContext.getContext (). Put ("Users", utilisateurs); / * define une collection pour stocker les idols d'idol sélectionnés par l'utilisateur * / List <INTER> UserRys = New ArrayList <Integer> (); Les espaces [doivent être utilisés de cette manière, la méthode TRIM () ne fonctionne pas] * / ids = ids.replaceAll ("", ""); / * itération * / for (String str: ids.split (",")) {userids.add (Integer.valueof (str));} / * userrids. userrids); renvoyez ce.success;}}Modifiez l'interface (écho aux données):
<body> Votre idole est: <S: CheckboxList name = "Users" list = "# utilisateurs" listKey = "uid" listValue = "uname" value = "# userrids" /> </ body>
Remarque: ListKey et ListValue sont deux propriétés de JavaBean. Ils seront placés dans la pile de valeur lors de l'itération de la liste de cocher, il n'est donc pas nécessaire de l'obtenir sous la forme de #Namespace. Vous pouvez l'obtenir directement en utilisant le nom d'attribut. La valeur de la valeur est la collection d'UID dans JavaBean, qui sera automatiquement appariée, puis sélectionner la valeur correspondante.
Ci-joint:
1. Si votre projet n'utilise pas Freemaker, mais l'erreur illustrée dans la figure ci-dessous apparaît!
Donc, félicitations, c'est parce que votre balise Struts2 n'a pas d'attribut de nom! ! ! ! (Une leçon des larmes, j'ai été trompée par elle pendant deux heures!)
Ce qui précède est tout le contenu de cet article sur l'apprentissage du code d'instance de cocher Struts2 de Java Framework, j'espère que cela sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!