迭代器中的Struts2动态列

时间:2016-02-21 08:16:52

标签: javascript struts2 ognl

我有一个选择框,

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

根据此选择框中的选择,我需要使列动态化:

<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 =&#34; nameList%{#stat.index}&#34;,它只使选择框动态化,我想让整个列成为动态。

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

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

还有其他方法可以让整个列动态化吗?

1 个答案:

答案 0 :(得分:1)

如果没有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>