为"禁用"设置动态值。 struts radio

时间:2016-03-09 17:12:20

标签: java jsp struts2 radio-button struts

所以我想创建一个struts收音机,它将显示元素(通过列表传递到参数" list"和" listKey"。 我想补充的是,有些无线电将是只读的(基于在服务器端bean上声明的某些字段)。

所以struts radio在jsp中是这样的:

<s:radio id="radioStatutType" 
       name="radioStatutType" 
      theme="extend" 
templateDir="template"
       list="statList" 
    listKey="myId" 
  listValue="label" 
    onclick="checkType();" 
   disabled="disabRgt" />

所以字段&#34; myId&#34;和&#34;标签&#34;在同一个bean中声明并且它们都完美地工作(所以我认为范围是正确的。)

与这两个字段相同,我声明了一个名为&#34; disabRgt&#34;的字符串。 (在bean中)填充了true / false(使用某些代码计算的布尔值上的toString)。我声明了setter和getter但是在显示jsp(和radio)时没有使用这个字段(我通过调试观察点访问/修改验证了)。

所以我将此字段更改为boolean(primitive),但它不起作用。最后,我将吸气剂更改为&#34; isDisabRgt&#34;而不是&#34; getDisabRgt&#34; =&GT;结果相同..

所以看来这个领域&#34; disabRgt&#34;永远不会被评估,&#34;禁用&#34;无线电中的参数始终填充默认值(为假)。

希望我解释得很好!有什么想法吗?

1 个答案:

答案 0 :(得分:2)

由于disabled="%{myBoolean}"没有评估表达式,因此您必须以其他方式执行此操作:

  • 在变量上使用<s:if>显示启用或禁用的无线电:

    <s:if test="%{disabRgt}">
        <s:radio ... disabled="true" >
    </s:if>
    <s:else>
        <s:radio ... >
    </s:else>
    
  • 使用Javascript禁用它:

    <script>
        $(function() {
            if (<s:property value="%{disabRgt}"/>){
                $("#radioStatutType").prop( "disabled", true );
            }
        });
    </script>
    

请记住永远使用布尔值,不要像布尔的toString() s那样使用voodoos;)