如果 Action 中的属性是 Map<String, User> users;并且有getter和setter方法! 那么与此对应的表单写法就是:(用标签来写) <s:textfield name="users[0].name" label="第一个用户名"/> <s:textfield name="users[0].name" label="第一个密码"/> <s:textfield name="users[1].name" label="第二个用户名"/> <s:textfield name="users[1].name" label="第二个密码"/>因为我的<s:textfield/>是经过循环生成的,当前jsp页面有一个java变量i:就一行:<s:textfield name="users[这里需要变量i怎么写].name" label="这里怎么写java变量?"/>
<s:textfield/>的name属性支持也应该变量的吧???如何定义啊?

解决方案 »

  1.   

    好像<%=i%>这种是可以的,ognl没有试过
      

  2.   

    写一个jsp表达式,比如:
     <s:textfield name="<%users.name%>" label="<%lable%>"/> 但里面的表达式好象不能太复杂,因为我碰到过这样的事:
    <mytag:test value="<%i+1%>"/>
    上面的表达式没有作用,但我改成这样就行了:
    <%
    int j=i+1;
    %>
    <mytag:test value="<%j%>"/>也不知道是什么原因.
      

  3.   

    <%String str = "user.username";%>
    <s:textfield label="username" name="<%str%>"/>eclipse上面打个x,但是可以运行,没用!!!没法接受<%str%>
      

  4.   

    HTML code<%String str = "user.username";%>
    <s:textfield label="username" name="<%str%>"/>eclipse上面打个x,但是可以运行,没用!!!没法接受 <%str%>============================
    哦,纠正一下,前面要加个等号:
    <%String str = "user.username";%>
    <s:textfield label="username" name="<%=str%>"/>
      

  5.   


    我刚才都把这两个楼两种情况都写了的,怎么只有一种呢:
    附上:报错,tag标签不接受任何表达式
      

  6.   

    在你定义标签的tld文件里加上一个属性值,让它支持表达式:
    <attribute>
      <name>userName</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>