Las casillas de verificación se usan mucho en el desarrollo web. Ahora usamos la etiqueta de casilla de verificación de Struts2 para implementar algunos problemas que a menudo encontramos en el desarrollo.
Echemos un vistazo a las propiedades de esta etiqueta:
Nota: ListKey es equivalente al atributo de valor en HTML. Este valor es realmente lo que queremos usar en segundo plano al interactuar con el fondo; ListValue es solo una pantalla de contenido.
El usuario ha seleccionado su curso favorito y ahora necesita modificar el curso que ha seleccionado, saltar a la interfaz de modificación y luego hacer eco del curso seleccionado.
El usuario ha seleccionado la interfaz del curso:
Haga clic en el botón e ingrese la interfaz de modificación del curso:
Nota: En la interfaz de modificación, debe hacer eco de la selección inicial del usuario.
El usuario ha seleccionado la interfaz del curso:
<Body> Your Course: <Form Action = "CheckBoxAction_Test.Action" Method = "Post"> <s: checkBoxList list = "{'java', '. net', 'php', 'c ++'}" name = "cursos"/> </br> <input type = "Envíe" valor = "Quiero modificar"/> </form> </body>Código de acción:
La ramita de comprobación de clase pública extiende las acciones {private static final long SerialVersionUid = 1l;/*El curso seleccionado por el usuario (String, necesita eliminar espacios)*/Cursos privados de cadena; se eliminará de esta manera, TRIM () no funciona]*/String extraños = this.courses.replaceall ("", "");/*Defina una colección para almacenar los cursos seleccionados por el usuario en la colección*/List <String> Usercourses = new ArrayList <String> ();/*Travel*/for (String Str: Extrolss.split (",")) {Usercourses.Add (str);}/*Guardar los cursos seleccionados por el usuario en el contexto de Ognl*/ActionContext.getContext (). PUT ("Usercursos", UserCourses);/*Pase todas las casillas de verificación en el formulario de una colección para mostrar, y luego coincidir con los seleccionados por los usuarios* ArrayList <String> (); Cous.Add ("java"); Cous.add (". Net"); Cous.add ("php"); Cous.add ("c ++");/*Guardar todos los correos en el contexto de contexto OGNL*/ActionContext.getContext ().Modificar la interfaz:
<Body> El curso que seleccionó es: <s: checkboxList name = "cursos" list = "#Cous" value = "#UserCourses" /> </body>
Nota: En la interfaz de modificación, es muy simple lograr el eco del resultado. Además, solo necesitamos el nombre del atributo # para obtener los valores de lista y valor, porque ya hemos colocado el objeto en el ActionContext, es decir, el contexto de ognlContext en la acción.
Aquí utilizamos un caso similar para acercarnos al entorno de desarrollo de simulación:
El usuario selecciona su ídolo (un objeto Javabean), y luego salta a la interfaz de modificación para modificarlo y se hace eco de los datos en la interfaz de modificación.
El usuario ha seleccionado la interfaz Idol:
Modificar la interfaz (para implementar el eco de datos)
El usuario ha seleccionado la interfaz Idol:
<Body> Your Idol: <Form Action = "CheckBoxListaction.Action" Method = "Post"> <S: CheckBoxList list = "#{1: 'Deng xiaoping', 2: 'xi jinping', 3: 'hu jintao', 4: 'li keqiang'}" name = "ids" listkey = "list" list "list"/"valor"/> </br type> "type> valor = "Quiero modificar"/> </form> </body> Nota: La lista es una colección de mapas creados por OGNL. ListKey es equivalente al valor de valor real del formulario enviado. Pasamos la tecla MAP al fondo para su procesamiento.
Objeto Javabean:
Usuario de clase pública {/* ID de usuario*/privado Integer uid;/* username*/private string uname;/* no-argument constructor*/public user () {}/* constructor*/public user (Integer uid, string uname) {this.uid = uid; this.uname = uname;} public intenger getuid () {return uid;} uid) {this.uid = uid;} public String getuname () {return uname;} public void setuname (string uname) {this.uname = uname;}}Código de acción:
CheckListAction de clase pública extiende ActionSupport {private static final long serialversionUid = 1l;/* Idol Collection*/private List <serer> users;/* Idol Id String*/private String IDS; Public List <serem> getUsers () {return Users;} public void setUsers (Lista <usuarios> usuarios) {this.users = ussers;} public string getIds () setIds (IDS de cadena) {this.ids = ids;} public String Execute () {/*Simule para obtener todos los ídolos de la base de datos, pasarlos a la recepción para mostrar y luego compararlos con la elección del usuario*/Useros = New ArrayList <User> (); Uss.Add (New User (1, "Deng Xiaoping")))); Jinping"));users.add(new User(3, "Hu Jintao"));users.add(new User(4, "Li Keqiang"));/*Save in OGNL Context context*/ActionContext.getContext().put("users", users);/*Define a collection to store the idol ids selected by the user*/List<Integer> userIds = new ArrayList <Integer> ();/*Obtenga los ID seleccionados por el usuario y elimine los espacios [debe usarse de esta manera, el método TRIM () no funciona]*/ids = id.replacealll ("", "");/*iteration*/for (String str: id.split (",")) {userIds.add (integer.valueOf ((str); OGNL Context Set*/ActionContext.getContext (). PUT ("UserIds", UserIds); devuelve esto.success;}}Modifique la interfaz (eco los datos):
<Body> Su ídolo es: <s: checkboxList name = "users" list = "#users" listkey = "uid" listValue = "uname" value = "#userids"/> </body>
Nota: ListKey y ListValue son dos propiedades de Javabean. Se colocarán en la pila de valor cuando CheckBoxList iteration, por lo que no es necesario obtenerlo en forma de #NamesSpace. Puede obtenerlo directamente usando el nombre del atributo. El valor del valor es la colección de UID en Javabean, que coincidirá automáticamente y luego seleccionará el valor correspondiente.
Adjunto:
1. Si su proyecto no usa Freemaker, pero aparece el error que se muestra en la siguiente figura.
Entonces, felicitaciones, ¡es porque su etiqueta Struts2 no tiene atributo de nombre! ! ! ! (¡Una lección de lágrimas, fui engañado por él durante dos horas!)
Lo anterior es todo el contenido de este artículo sobre el aprendizaje del código de instancia de casilla de verificación Struts2 del marco Java, espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!