获取单选元素 struts2 中 <s:set> 变量的值

Get value of <s:set> variable in radio element struts2

下面的循环运行了3次,显示了3个radio button,我的要求是默认选中第一个radio。

为此,我设置了一个 <s:if> 条件并检查迭代器的索引是否为 0,在一个 "check" 变量中设置 "true"。

现在我正在以 checked="%{check}${#check}#check 的形式访问此检查变量,但没有得到期望的结果。

只有最后一个收音机是检查过的

此外,如果我像这样 <s:property value="%{check}"/> 在循环内但在无线电外打印“check”变量,它会显示正确的值 true、false、false。但是当我在 <s:radio> 中使用这个变量时,它不能正常工作。

请帮忙如何在 <s:radio> 中访问这个 "check" 变量?

<s:iterator value="operativeMode" var="mode" status="itStatus">
    <s:set var="check" value="false"/>
    <s:if test="#itStatus.index==0">
        <s:set var="check" value="true"/>
    </s:if> 

    <s:radio class="opmode" theme="simple" name="providerScheduleTO.contactMode"
     listValue="%{#mode.getDescription()}" list="%{#mode.getCode()}" %{check}
    />
    <br>       
</s:iterator>

您的编码就像使用标准 HTML <input type="radio" /> 标签一样。

当使用Struts2<s:radio/>标签时,HTML<input type="radio" />标签的列表是通过list属性生成的,所以不需要迭代列表并为每个元素创建一个单选按钮。

也就是说,

  1. classcssClass,
  2. getter 在 OGNL 中访问时没有 get() 部分,
  3. 您缺少 listKey 属性,并且
  4. 必须通过 value 属性指定 checked 元素。

您的整个代码应替换为以下内容:

<s:radio     list = "%{operativeMode}" 
          listKey = "%{code}"
        listValue = "%{description}" 
            value = "%{operativeMode[0].code}" 
             name = "providerScheduleTO.contactMode" 
         cssClass = "opmode" 
            theme = "simple"              
/>

也看看