使用struts2和freemarker创建“是”和“否”单选按钮

时间:2011-10-06 22:09:23

标签: struts2 freemarker

在我的struts2应用程序中,我想在我的控制器上绑定一个布尔属性(让我们用一个isFrobbed()getter调用它)到一对“是”和“否”单选按钮(我知道我可以使用复选框,但出于各种原因,我们更喜欢明确的“是”和“否”)。

有了一个复选框,我会按照以下方式做点什么:

 <@s.checkbox name="frobbed" label="would you like this to be frobbed?" />

然而,使用单选按钮我完全迷失了。我知道有一个名为“radio”的struts2标签,但我不确定它是如何使用的。例如,这不起作用。

<@s.radio name="frobbed"  value="true"  label="Please frob this object" />
<@s.radio name="frobbed"  value="false" label="No frobbing, thanks." />

我希望这与控制器中'frobbed'的值绑定,例如,当值为true时,会自动选择“yes”radiobutton。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

此语法与FreeMarker一起用于布尔选择:

<@s.radio label="" name="frob" list="#@java.util.LinkedHashMap@{true:'Frob it',false:'Leave unfrobbed'}" />

答案 1 :(得分:2)

当选择是简单的Yes / No,True / False时 - 我更喜欢在jsp中定义原位选择。像...这样的东西。

<s:radio label="Frobbed?" list="#{true:'Frob Me',false:'Leave me Frobless'}" name="frobbed" value="%{frobbed}"></s:radio>

此致

答案 2 :(得分:1)

通常,<s:radio>标记与选项列表(或地图)一起使用。例如,使用地图,键将是无线电值(在本例中为Boolean.TRUEBoolean.FALSE),值将是单选按钮标签(“Frob away”,“我选择保持冷漠“)。

<s:radio list="yesNo" name="frobbed"/>

yesNo属性值是列表或地图。

(使用列表,您将公开带有标签和值的对象,并使用“listKey”和“listValue”<s:radio>属性。(IIRC))