Creando botones de opción "sí" y "no" usando struts2 y freemarker
(3)
En mi aplicación struts2 me gustaría vincular una propiedad booleana (vamos a llamarla frobbed con un getFrobbed () getter) en mi controlador a un par de botones de opción "sí" y "no" (sé que podría usar una casilla de verificación , pero por diversas razones preferiríamos un "sí" y un "no" explícitos.
Con una casilla de verificación, haría algo como esto:
<@s.checkbox name="frobbed" label="would you like this to be frobbed?" />
Sin embargo, con los botones de radio estoy totalmente perdido. Sé que hay una etiqueta struts2 llamada "radio", pero no estoy seguro de cómo se usa. Por ejemplo, esto no funciona.
<@s.radio name="frobbed" value="true" label="Please frob this object" />
<@s.radio name="frobbed" value="false" label="No frobbing, thanks." />
Me gustaría que esto esté vinculado al valor de ''frobbed'' en el controlador para que, por ejemplo, cuando el valor sea verdadero, el botón de radio "sí" se seleccione automáticamente.
¿Algunas ideas?
Normalmente, la etiqueta <s:radio>
se usa con una lista de opciones (o un mapa). Por ejemplo, con un mapa, la clave serían los valores de radio (como Boolean.TRUE
y Boolean.FALSE
en este caso) y el valor sería la etiqueta del botón de opción ("Frob away", "elijo permanecer sin frobbed") .
<s:radio list="yesNo" name="frobbed"/>
El valor del atributo yesNo
es esa lista o mapa.
(Con una lista expondrías un objeto con la etiqueta y el valor y usar los atributos "listKey" y "listValue" <s:radio>
. (IIRC))
Cuando la elección es un simple Sí / No, verdadero / falso: prefiero definir las elecciones in situ dentro de jsp. Algo como ..
<s:radio label="Frobbed?" list="#{true:''Frob Me'',false:''Leave me Frobless''}" name="frobbed" value="%{frobbed}"></s:radio>
Saludos
Esta sintaxis funciona con FreeMarker para una opción booleana:
<@s.radio label="" name="frob" list="#@java.util.LinkedHashMap@{true:''Frob it'',false:''Leave unfrobbed''}" />