Clase 11 12 Tags Struts2
Clase 11 12 Tags Struts2
Clase 11 12 Tags Struts2
Struts 2 proporciona una librería de etiquetas que facilitan, entre otras, las tareas de validación
tags.tld, en el jar de struts2-core, pueden utilizarse tanto con JSP como con Velocity o
FreeMarker.
A continuación veremos una lista con las distintas etiquetas, una pequeña definición, la clase
que las implementa, algunos atributos útiles y, cuando se ha considerado necesario, un pequeño
ejemplo (usando JSP). Sin embargo, para evitar repeticiones, comenzaremos primero
• cssClass: El atributo class de HTML. Indica la clase CSS a utilizar para el elemento
HTML generado.
• cssStyle: El atributo style de HTML. Permite definir el estilo del elemento inline, en
lugar de utilizar un archivo CSS externo o una etiqueta style.
• label: Etiqueta que acompañará al widget. Genera una clásica etiqueta label de
HTML.
ACTION
Permite ejecutar una acción desde una vista indicando el nombre de la acción y, opcionalmente,
org.apache.struts2.views.jsp.ActionTag
executeResult: determina si el resultado de la acción (normalmente otra vista) se debe
invocar la acción.
index.jsp
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2.
3. @SuppressWarnings("serial")
4. public class Accion extends ActionSupport {
5. private String web;
6.
7. public String getWeb() {
8. return web;
9. }
10.
11. public String execute() {
12. web = "mundogeek.net";
13. return SUCCESS;
14. }
15. }
resultado.jsp
estarán disponibles en la vista, por lo que es posible en su lugar comprobar si existen errores
org.apache.struts2.views.jsp.ui.ActionErrorTag
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2.
3. @SuppressWarnings("serial")
4. public class Accion extends ActionSupport {
5. public String execute() {
6. addActionError("Oh dios mío, ¡un error!");
7. return ERROR;
8. }
9. }
resultado.jsp
ACTIONMESSAGE
Similar a actionerror, pero en lugar de errores en la acción sirve para mostrar mensajes de la
org.apache.struts2.views.jsp.ui.ActionMessageTag
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2.
3. @SuppressWarnings("serial")
4. public class Accion extends ActionSupport {
5. public String execute() {
6. addActionMessage("Tengo un mensaje para usted.");
7. return SUCCESS;
8. }
9. }
resultado.jsp
A
Crea una etiqueta anchor HTML. Se puede utilizar con el tema ajax para generar llamadas
asíncronas al servidor.
org.apache.struts2.views.jsp.ui.AnchorTag
APPEND
Crea un nuevo iterador a partir de varios iteradores pasados como parámetro en forma de
etiquetas param.
org.apache.struts2.views.jsp.iterator.AppendIteratorTag
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.List;
3. import java.util.ArrayList;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7. private List<String> registrados;
8. private List<String> vips;
9.
10. public List<String> getRegistrados() {
11. return registrados;
12. }
13.
14. public List<String> getVips() {
15. return vips;
16. }
17.
18. public String execute() {
19. registrados = new ArrayList<String>();
20. registrados.add("Juan");
21. registrados.add("Manuel");
22.
23. vips = new ArrayList<String>();
24. vips.add("Pedro");
25. vips.add("María");
26.
27. return SUCCESS;
28. }
29. }
resultado.jsp
BEAN
Instancia un Java Bean. Se puede pasar valores a las propiedades del bean utilizando
etiquetas param.
org.apache.struts2.views.jsp.BeanTag
Usuario.java
resultado.jsp
CHECKBOX
Crea un checkbox HTML. Para una lista de varios checkboxes relacionados podemos utilizar la
etiqueta checkboxlist.
org.apache.struts2.views.jsp.ui.CheckboxTag
value: Booleano que indica si el checkbox está marcado o no.
index.jsp
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2.
3. @SuppressWarnings("serial")
4. public class Accion extends ActionSupport {
5. private boolean condiciones;
6.
7. public boolean isCondiciones() {
8. return condiciones;
9. }
10.
11. public void setCondiciones(boolean condiciones) {
12. this.condiciones = condiciones;
13. }
14.
15. public String execute() {
16. return SUCCESS;
17. }
18. }
resultado.jsp
CHECKBOXLIST
Crea una lista de checkboxes relacionados (todos con el mismo atributo name). Esto implica que
el valor del elemento no será un booleano indicando si está marcado o no, como en el caso de
org.apache.struts2.views.jsp.ui.CheckboxListTag
list (requerido): Iterable con los valores con los que generar la lista.
listKey: Propiedad de los objetos del iterable del que el checkbox correspondiente tomará su
valor.
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.List;
3. import java.util.ArrayList;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7. private List<String> lenguajes;
8.
9. public List<String> getLenguajes() {
10. return lenguajes;
11. }
12.
13. public String execute() {
14. lenguajes = new ArrayList<String>();
15. lenguajes.add("Python");
16. lenguajes.add("Java");
17. lenguajes.add("Ruby");
18. lenguajes.add("C#");
19. lenguajes.add("C++");
20. lenguajes.add("Lisp");
21. return SUCCESS;
22. }
23. }
resultado.jsp
COMBOBOX
Crea una combinación de select y caja de texto. El valor de la caja de texto se auto rellena
org.apache.struts2.views.jsp.ui.ComboBoxTag
valor.
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.List;
3. import java.util.ArrayList;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7. private List<String> lenguajes;
8.
9. public List<String> getLenguajes() {
10. return lenguajes;
11. }
12.
13. public String execute() {
14. lenguajes = new ArrayList<String>();
15. lenguajes.add("Python");
16. lenguajes.add("Java");
17. lenguajes.add("Ruby");
18. lenguajes.add("C#");
19. lenguajes.add("C++");
20. lenguajes.add("Lisp");
21. return SUCCESS;
22. }
23. }
resultado.jsp
DATE
Permite mostrar una fecha almacenada en una cierta variable indicando opcionalmente el
formato a utilizar.
org.apache.struts2.views.jsp.DateTag
format: Formato a utilizar para mostrar la fecha. Si queremos usar siempre el mismo formato
podemos crear un archivo properties con una entrada struts.date.format. Por defecto se
mensajes; si queremos traducirlo a algún otro idioma tendremos que recurrir a las funciones de
struts.date.format.hours
{0,choice,1#one hour|1<{0} hours}{1,choice,0#|1#, one
minute|1<, {1} minutes}
struts.date.format.days
{0,choice,1#one day|1<{0} days}{1,choice,0#|1#, one
hour|1<, {1} hours}
struts.date.format.years
{0,choice,1#one year|1<{0} years}{1,choice,0#|1#, one
day|1<, {1} days}
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2.
3. import java.util.Calendar;
4. import java.util.Date;
5.
6. @SuppressWarnings("serial")
7. public class Accion extends ActionSupport {
8. private Date ahora;
9. private Date anyoNuevo;
10.
11. public Date getAhora() {
12. return ahora;
13. }
14.
15. public Date getAnyoNuevo() {
16. return anyoNuevo;
17. }
18.
19. public String execute() {
20. ahora = new Date();
21.
22. Calendar cal = Calendar.getInstance();
23. int anyo = cal.get(Calendar.YEAR);
24. cal.set(anyo + 1, Calendar.JANUARY, 1);
25. anyoNuevo = cal.getTime();
26.
27. return SUCCESS;
28. }
29. }
resultado.jsp
DEBUG
Imprime información de depuración (entre otros, el contenido de ValueStack).
org.apache.struts2.views.jsp.ui.DebugTag
DIV
Crea un elemento div de HTML.
org.apache.struts2.views.jsp.ui.DivTag
DOUBLESELECT
Crea dos elementos select HTML, con el segundo de ellos modificando sus valores dependiendo
org.apache.struts2.views.jsp.ui.DoubleSelectTag
doubleList (requerido): Lista con los valores que tendrá el segundo select.
doubleMultiple: Determina si en el segundo select se pueden seleccionar varios valores o
solo uno.
Artista.java
1. import java.util.List;
2.
3. public class Artista {
4. private String nombre;
5. private List<String> canciones;
6.
7. public Artista(String nombre, List<String> canciones) {
8. this.nombre = nombre;
9. this.canciones = canciones;
10. }
11.
12. public String getNombre() {
13. return nombre;
14. }
15.
16. public List<String> getCanciones() {
17. return canciones;
18. }
19. }
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.List;
3. import java.util.ArrayList;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7. private List<Artista> artistas;
8.
9. public List<Artista> getArtistas() {
10. return artistas;
11. }
12.
13. public String execute() {
14. artistas = new ArrayList<Artista>();
15.
16. List<String> canciones_p = new ArrayList<String>();
17. canciones_p.add("El equilibro es imposible");
18. canciones_p.add("Años 80");
19. canciones_p.add("Promesas que no valen nada");
20. Artista piratas = new Artista("Los piratas", canciones_p);
21. artistas.add(piratas);
22.
23. List<String> canciones_c = new ArrayList<String>();
24. canciones_c.add("Viva la vida");
25. canciones_c.add("Clocks");
26. canciones_c.add("Life in technicolor");
27. Artista coldplay = new Artista("Coldplay", canciones_c);
28. artistas.add(coldplay);
29.
30. return SUCCESS;
31. }
32. }
resultado.jsp
FIELDERROR
Muestra los errores que se han detectado al validar los campos del formulario. Por defecto se
muestran todos los errores, pero podemos seleccionar que se muestren sólo los relativos a
errores por defecto sin necesidad de añadir esta etiqueta. Los métodos y propiedades
colección fieldErrors.
org.apache.struts2.views.jsp.ui.FieldErrorTag
index.jsp
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2.
3. @SuppressWarnings("serial")
4. public class Accion extends ActionSupport {
5. private String nombre;
6.
7. public String getNombre() {
8. return nombre;
9. }
10.
11. public void setNombre(String nombre) {
12. this.nombre = nombre;
13. }
14.
15. public String execute() {
16. if(nombre.length() > 10) {
17. addFieldError("nombre", "El nombre no puede tener más de 10 caracteres.");
18. return ERROR;
19. }
20.
21. return SUCCESS;
22. }
23. }
resultado.jsp
(defaultStack) y que funciona de forma parecida al interceptor param. Basta crear setters y
org.apache.struts2.views.jsp.ui.FileTag
accept: atributo del mismo nombre de HTML que permite indicar los tipos MIME que acepta el
campo.
index.jsp
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.io.BufferedReader;
3. import java.io.File;
4. import java.io.FileReader;
5. import java.io.IOException;
6.
7. @SuppressWarnings("serial")
8. public class Accion extends ActionSupport {
9. private File archivoTexto;
10. private String archivoTextoContentType;
11. private String archivoTextoFileName;
12. private String contenido;
13.
14. public String getContenido() {
15. return contenido;
16. }
17.
18. public File getArchivoTexto() {
19. return archivoTexto;
20. }
21.
22. public void setArchivoTexto(File archivoTexto) {
23. this.archivoTexto = archivoTexto;
24. }
25.
26. public String getArchivoTextoContentType() {
27. return archivoTextoContentType;
28. }
29.
30. public void setArchivoTextoContentType(String archivoTextoContentType) {
31. this.archivoTextoContentType = archivoTextoContentType;
32. }
33.
34. public String getArchivoTextoFileName() {
35. return archivoTextoFileName;
36. }
37.
38. public void setArchivoTextoFileName(String archivoTextoFileName) {
39. this.archivoTextoFileName = archivoTextoFileName;
40. }
41.
42. public String execute() throws IOException {
43. BufferedReader input = new BufferedReader(new FileReader(archivoTexto));
44.
45. String linea = "";
46. contenido = "";
47. while ((linea = input.readLine()) != null)
48. contenido = contenido + linea;
49.
50. return SUCCESS;
51. }
52. }
resultado.jsp
org.apache.struts2.views.jsp.ui.FormTag
action: Acción a la que se enviará la petición con los datos del formulario. También se puede
enlazar otras páginas o servlets. Si no utilizamos el atributo para especificar el destino se utiliza
namespace: Espacio de nombres al que pertenece la acción a la que se enviará la petición. Por
COMPONENT
Utilizado para crear nuestras propias etiquetas sin tener que recurrir a la API de etiquetas de
JSP.
org.apache.struts2.views.jsp.ui.ComponentTag
HEAD
Etiqueta auxiliar que se coloca dentro de la etiqueta head de HTML y se encarga de generar
distintos elementos necesarios para otras etiquetas, como las etiquetas para la carga de hojas
de estilo o scripts.
org.apache.struts2.views.jsp.ui.HeadTag
HIDDEN
Crea un campo oculto.
org.apache.struts2.views.jsp.ui.HiddenTag
I18N
Carga un archivo de recursos adicional con la traducción de nuestros mensajes y los coloca
en ValueStack de forma que puedan ser accedidos fácilmente por el código que se encuentre
dentro de la etiqueta.
org.apache.struts2.views.jsp.I18nTag
IF-ELSEIF-ELSE
La típica sentencia condicional.
org.apache.struts2.views.jsp.IfTag
org.apache.struts2.views.jsp.ElseIfTag
org.apache.struts2.views.jsp.ElseTag
index.jsp
INCLUDE
Parecido a action con el parámetro executeResult, pero, a diferencia de este, permite incluir
cualquier recurso. Como el include de JSP también se le pueden pasar parámetros para que
sea dinámico con etiquetas param, pero estos valores no se acceden como propiedades
org.apache.struts2.views.jsp.IncludeTag
1. <h1>Bienvenido a ${param.web}</h1>
index.jsp
INPUTTRANSFERSELECT
Crea un componente consistente en un select de selección múltiple, un campo de texto y
org.apache.struts2.views.jsp.ui.InputTransferSelectTag
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.List;
3. import java.util.ArrayList;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7. private List<String> lenguajes;
8.
9. public List<String> getLenguajes() {
10. return lenguajes;
11. }
12.
13. public String execute() {
14. lenguajes = new ArrayList<String>();
15. lenguajes.add("Python");
16. lenguajes.add("Java");
17. lenguajes.add("Ruby");
18. lenguajes.add("C#");
19. lenguajes.add("C++");
20. lenguajes.add("Lisp");
21. return SUCCESS;
22. }
23. }
resultado.jsp
ITERATOR
Para iterar sobre colecciones. En cada iteración el objeto recuperado se coloca
org.apache.struts2.views.jsp.IteratorTag
status: Crea una instancia de IteratorStatus con el nombre indicado. Este objeto expone
algunas propiedades muy útiles como index (índice del elemento actual),first (booleano que
indica si es el primero elemento), even (booleano que indica si es impar), last (booleano que
indica si es el último elemento) u odd (booleano que indica si es par).
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.List;
3. import java.util.ArrayList;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7. private List<String> lenguajes;
8.
9. public List<String> getLenguajes() {
10. return lenguajes;
11. }
12.
13. public String execute() {
14. lenguajes = new ArrayList<String>();
15. lenguajes.add("Python");
16. lenguajes.add("Java");
17. lenguajes.add("Ruby");
18. lenguajes.add("C#");
19. lenguajes.add("C++");
20. lenguajes.add("Lisp");
21. return SUCCESS;
22. }
23. }
resultado.jsp
LABEL
Crea una etiqueta label de HTML.
org.apache.struts2.views.jsp.ui.LabelTag
MERGE
Crea un nuevo iterador unión de los distintos iteradores pasados como parámetro mediante
etiquetas param.
org.apache.struts2.views.jsp.iterator.MergeIteratorTag
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.List;
3. import java.util.ArrayList;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7. private List<String> lista1;
8. private List<String> lista2;
9.
10. public List<String> getLista1() {
11. return lista1;
12. }
13.
14. public void setLista1(List<String> lista1) {
15. this.lista1 = lista1;
16. }
17.
18. public List<String> getLista2() {
19. return lista2;
20. }
21.
22. public void setLista2(List<String> lista2) {
23. this.lista2 = lista2;
24. }
25.
26. public String execute() {
27. lista1 = new ArrayList<String>();
28. lista1.add("Uno");
29. lista1.add("Dos");
30. lista1.add("Tres");
31.
32. lista2 = new ArrayList<String>();
33. lista2.add("1");
34. lista2.add("2");
35. lista2.add("3");
36.
37. return SUCCESS;
38. }
39. }
resultado.jsp
OPTGROUP
Crea un nuevo elemento HTML optgroup (un grupo de opciones para un elemento select)
org.apache.struts2.views.jsp.ui.OptGroupTag
list: El objeto del que se tomarán los valores con los que rellenar el elemento.
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2.
3. import java.util.HashMap;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7. private HashMap<String, String> registrados;
8. private HashMap<String, String> vips;
9.
10. public HashMap<String, String> getVips() {
11. return vips;
12. }
13.
14. public void setVips(HashMap<String, String> vips) {
15. this.vips = vips;
16. }
17.
18. public HashMap<String, String> getRegistrados() {
19. return registrados;
20. }
21.
22. public void setRegistrados(HashMap<String, String> registrados) {
23. this.registrados = registrados;
24. }
25.
26. public String execute() {
27. registrados = new HashMap<String, String>();
28. registrados.put("Juan", "Juan Encina");
29. registrados.put("Manuel", "Manuel Robledo");
30.
31. vips = new HashMap<String, String>();
32. vips.put("Pedro", "Pedro Peral");
33. vips.put("María", "María Manzano");
34.
35. return SUCCESS;
36. }
37. }
resultado.jsp
OPTIONTRANSFERSELECT
Crea un componente consistente en dos selects cuyos elementos pueden traspasarse de uno a
otro.
org.apache.struts2.views.jsp.ui.OptionTransferSelectTag
doubleList (requerido): El iterador con los valores que tendrá el segundo select al comenzar.
doubleName (requerido): Nombre a utilizar para el elemento.
leftTitle: Título del primer select.
list: El iterador con los valores que tendrá el primer select al comenzar.
rightTitle: Título del segundo select
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2.
3. import java.util.HashMap;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7. private HashMap<String, String> registrados;
8. private HashMap<String, String> vips;
9.
10. public HashMap<String, String> getVips() {
11. return vips;
12. }
13.
14. public void setVips(HashMap<String, String> vips) {
15. this.vips = vips;
16. }
17.
18. public HashMap<String, String> getRegistrados() {
19. return registrados;
20. }
21.
22. public void setRegistrados(HashMap<String, String> registrados) {
23. this.registrados = registrados;
24. }
25.
26. public String execute() {
27. registrados = new HashMap<String, String>();
28. registrados.put("Juan", "Juan Encina");
29. registrados.put("Manuel", "Manuel Robledo");
30.
31. vips = new HashMap<String, String>();
32. vips.put("Pedro", "Pedro Peral");
33. vips.put("María", "María Manzano");
34.
35. return SUCCESS;
36. }
37. }
resultado.jsp
PARAM
Utilizada para añadir parámetros a otras etiquetas.
org.apache.struts2.views.jsp.ParamTag
org.apache.struts2.views.jsp.ui.PasswordTag
resultado.jsp
PROPERTY
Muestra una propiedad de ValueStack u otro objeto de ActionContext.
org.apache.struts2.views.jsp.PropertyTag
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2.
3. @SuppressWarnings("serial")
4. public class Accion extends ActionSupport {
5. private String web;
6.
7. public String getWeb() {
8. return web;
9. }
10.
11. public void setWeb(String web) {
12. this.web = web;
13. }
14.
15. public String execute() {
16. web = "mundogeek.net";
17. return SUCCESS;
18. }
19. }
resultado.jsp
PUSH
Añade el valor especificado a lo alto de la pila.
org.apache.struts2.views.jsp.PushTag
RADIO
Crea un conjunto de radio buttons HTML.
org.apache.struts2.views.jsp.ui.RadioTag
list (requerido): Lista con los valores que tendrá el grupo de radio buttons.
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.List;
3. import java.util.ArrayList;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7. private List<String> lenguajes;
8.
9. public List<String> getLenguajes() {
10. return lenguajes;
11. }
12.
13. public String execute() {
14. lenguajes = new ArrayList<String>();
15. lenguajes.add("Python");
16. lenguajes.add("Java");
17. lenguajes.add("Ruby");
18. lenguajes.add("C#");
19. lenguajes.add("C++");
20. lenguajes.add("Lisp");
21. return SUCCESS;
22. }
23. }
resultado.jsp
RESET
Crea un botón que borra los datos introducidos en el formulario.
org.apache.struts2.views.jsp.ui.ResetTag
resultado.jsp
SELECT
Crea un elemento select.
org.apache.struts2.views.jsp.ui.SelectTag
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.List;
3. import java.util.ArrayList;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7. private List<String> lenguajes;
8.
9. public List<String> getLenguajes() {
10. return lenguajes;
11. }
12.
13. public String execute() {
14. lenguajes = new ArrayList<String>();
15. lenguajes.add("Python");
16. lenguajes.add("Java");
17. lenguajes.add("Ruby");
18. lenguajes.add("C#");
19. lenguajes.add("C++");
20. lenguajes.add("Lisp");
21. return SUCCESS;
22. }
23. }
resultado.jsp
org.apache.struts2.views.jsp.SetTag
resultado.jsp
SUBMIT
Crea un botón para enviar el formulario.
org.apache.struts2.views.jsp.ui.SubmitTag
resultado.jsp
TEXT
Muestra un texto localizado de un resource bundle.
org.apache.struts2.views.jsp.TextTag
index.jsp
Accion.properties
Accion_en.properties
Accion_fr.properties
resultado.jsp
1. <%@ taglib uri="/struts-tags" prefix="s"%>
2.
3. <html>
4. <body>
5. <s:text name="mensaje" />
6. </body>
7. </html>
TEXTAREA
Crea un elemento textarea de HTML.
org.apache.struts2.views.jsp.ui.TextareaTag
resultado.jsp
TEXTFIELD
Crea una caja de texto.
org.apache.struts2.views.jsp.ui.TextFieldTag
maxlength: Atributo maxlength de HTML (número máximo de caracteres permitidos)
readonly: Determina si el campo será de solo lectura.
size: Atributo size de HTML (tamaño de la caja de texto en caracteres)
resultado.jsp
TOKEN
Añade un token oculto al formulario para ayudar a los interceptores token ytokenSession a
evitar que el usuario mande la misma petición varias veces por error.
org.apache.struts2.views.jsp.ui.TokenTag
resultado.jsp
URL
Crea una URL. Se pueden añadir parámetros a la URL usando etiquetas param.
org.apache.struts2.views.jsp.URLTag
action: Acción a la que llama la URL. Si queremos pasar una URL directamente se
utiliza value.
encode: Indica si queremos hacer reescritura de URLs para mantener sesiones si el usuario
UPDOWNSELECT
Crea un select con botones para ordenar los elementos según el gusto del usuario.
org.apache.struts2.views.jsp.ui.UpDownSelectTag
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.List;
3. import java.util.ArrayList;
4.
5. @SuppressWarnings("serial")
6. public class Accion extends ActionSupport {
7. private List<String> lenguajes;
8.
9. public List<String> getLenguajes() {
10. return lenguajes;
11. }
12.
13. public String execute() {
14. lenguajes = new ArrayList<String>();
15. lenguajes.add("Python");
16. lenguajes.add("Java");
17. lenguajes.add("Ruby");
18. lenguajes.add("C#");
19. lenguajes.add("C++");
20. lenguajes.add("Lisp");
21. return SUCCESS;
22. }
23. }
resultado.jsp
GENERATOR
Genera un nuevo iterador. Los valores se obtienen dividiendo la cadena val usando como
org.apache.struts2.views.jsp.iterator.IteratorGeneratorTag
converter: Objeto de tipo Converter con el que realizar las distintas operaciones que sean
del iterador.
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import org.apache.struts2.util.IteratorGenerator.Converter;
3.
4. @SuppressWarnings("serial")
5. public class Accion extends ActionSupport {
6. private String lenguajes;
7. private Converter aMayusculas;
8.
9. public Converter getAMayusculas() {
10. return aMayusculas;
11. }
12.
13. public String getLenguajes() {
14. return lenguajes;
15. }
16.
17. public String execute() {
18. aMayusculas = new Converter() {
19. public Object convert(String cadena) throws Exception {
20. return cadena.toUpperCase();
21. }
22. };
23.
24. lenguajes = "Python,Java,Ruby,C#,C++,Lisp";
25. return SUCCESS;
26. }
27. }
resultado.jsp
SORT
Ordena una lista
org.apache.struts2.views.jsp.iterator.SortIteratorTag
comparator (requerido): Objeto Comparator a utilizar para comparar los valores de la lista.
source: Lista a ordenar.
var: Nombre con el que almacenar la nueva lista. Se almacenará como atributo de page
context.
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.ArrayList;
3. import java.util.Comparator;
4. import java.util.List;
5.
6. @SuppressWarnings("serial")
7. public class Accion extends ActionSupport {
8. private List<String> lenguajes;
9. private Comparator<String> compararString;
10.
11. public List<String> getLenguajes() {
12. return lenguajes;
13. }
14.
15. public Comparator<String> getCompararString() {
16. return compararString;
17. }
18.
19. public String execute() {
20. compararString = new Comparator<String>() {
21. public int compare(String valor1, String valor2) {
22. return valor1.compareTo(valor2);
23. }
24. };
25.
26. lenguajes = new ArrayList<String>();
27. lenguajes.add("Python");
28. lenguajes.add("Java");
29. lenguajes.add("Ruby");
30. lenguajes.add("C#");
31. lenguajes.add("C++");
32. lenguajes.add("Lisp");
33.
34. return SUCCESS;
35. }
36. }
resultado.jsp
SUBSET
Obtiene un subconjunto de un iterador.
org.apache.struts2.views.jsp.iterator.SubsetIteratorTag
Accion.java
1. import com.opensymphony.xwork2.ActionSupport;
2. import java.util.ArrayList;
3. import java.util.List;
4.
5. import org.apache.struts2.util.SubsetIteratorFilter.Decider;
6.
7. @SuppressWarnings("serial")
8. public class Accion extends ActionSupport {
9. private List<String> lenguajes;
10. private Decider decisor;
11.
12. public List<String> getLenguajes() {
13. return lenguajes;
14. }
15.
16. public Decider getDecisor() {
17. return decisor;
18. }
19.
20. public String execute() {
21. decisor = new Decider() {
22. public boolean decide(Object elemento) throws Exception {
23. String cadena = ((String) elemento);
24. return cadena.startsWith("C");
25. }
26. };
27.
28. lenguajes = new ArrayList<String>();
29. lenguajes.add("Python");
30. lenguajes.add("Java");
31. lenguajes.add("Ruby");
32. lenguajes.add("C#");
33. lenguajes.add("C++");
34. lenguajes.add("Lisp");
35.
36. return SUCCESS;
37. }
38. }
resultado.jsp
http://struts.apache.org/2.0.14/docs/tag-reference.html
http://www.roseindia.net/struts/struts2/struts2uitags/index.shtml
http://www.vaannila.com/struts-2/struts-2-tutorial/struts-2-tutorial.html