Struts2 迭代器中的动态列

Struts2 dynamic columns in iterator

我有一个select盒子,

    <table>
    <tr><td>
    <s:select id = "mode" list="#{'0':'SELECT','A':'ABC','B':'XYZ'}" > </s:select>
   </td></tr>
    </table>

基于这个 select 框中的 selection,我需要使列动态化:

<table>
<tr>
<td><div align="center">Serial Number</div></td>
<td><div align="center">Employee Number</div></td>
<td id="name"><div align="center">Employee Name</div></td>
</tr>

<s:iterator status="stat" value="empList" id="empList">
 <tr>
    <td><div align="center"><s:property value="%{#stat.count}"/></div></td>
    <td><div align="center"><s:property value="empNum" /></div></td>
    <td><div align="center"><s:select id="nameList%{#stat.index}" list="#{'A':'ABC','B':'XYZ'}" > </s:select></div></td>
</tr>
 </s:iterator>
</table>

我使用的脚本是这样的:

<script>
        var mode = document.getElementById("mode");
        var selMode = mode.options[mode.selectedIndex].value;
        var cnt = document.getElementById("rowCnt").value;
        if(selMode=="A"){

            for(i=0;i<=cnt;i++){
            var name = document.getElementById("name");
            name.style.display = "none";
            var lname = document.getElementById("nameList"+i);
            lname.style.display = "none";

            }
        }
        else{

            for(i=0;i<=cnt;i++){
            var name = document.getElementById("name");
            name.style.display = "block";
            var lname = document.getElementById("nameList"+i);
            lname.style.display = "block";
            }
        }
    </script>

但是使用 id="nameList%{#stat.index}",它只使 select 框动态,我想使整个列都动态。

<td id="nameList%{#stat.index}"><div align="center"><s:select  list="#{'A':'ABC','B':'XYZ'}" > </s:select></div></td>

不起作用。似乎 %{#stat.index} 的值不能作为列 ID 传递。

有没有其他方法可以让整个栏目动态化?

没有 Struts 标签就不能使用 OGNL。要打印 OGNL 表达式的值,您应该使用 s:property 标签。

<td id="<s:property value='nameList%{#stat.index}'/>"><div align="center"><s:select  list="#{'A':'ABC','B':'XYZ'}" > </s:select></div></td>