如何在 Struts2 中制作互斥复选框?

问题描述

我有一个变量paramMap,类型是HashMap<String,String>,它有两个元素:

{"1","areaNo"}
{"2","areaOrgNo"}

以及Struts2的复选框代码如下:

<s:iterator value="paramMap" var="params" status="paramStatus">
  <input type="checkBox" name="params" key_id="#paramStatus.index" value="<s:property value="#param.key"/>"
  <s:if test="#paramStatus.index=0">
    onclick=checkAreaNo()
  </s:if>

我想要的逻辑是,当我选中 areaNo 时,areaOrgNo 将被取消选中,我应该如何在 checkAreaNo() 中编写函数 <script></script>?我写了 checkAreaNo() 如下,但它不起作用:

<script>
  function checkAreaNo() {
    if ( $(input[key_id='1']).prop("checked") ) {
      $(input[key_id='1']).prop("checked",false)
    }
  }
</script>

解决方法

我不知道您的地图中有哪些元素,但在纯 HTML 中,元素是 DOM,并且您不能对它们使用 OGNL 语法。有关详细信息,请参阅 this 答案。

因此,正如我在对纯 html 标记使用 OGNL 的评论答案中所说,您应该使用 <s:property> tag 或 JSP EL。

<input type="checkbox" name="params" key_id="<s:property value='#paramStatus.index'/>" value="<s:property value='#params.key'/>" label="<s:property value='#params.value'/>">

<input type="checkbox" name="params" key_id="${paramStatus.index}" value="${params.key}" label="${params.value}">