zoukankan      html  css  js  c++  java
  • struts2传递List对象(复合对象)

    1、前台jsp界面:

    <%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@include file="../include/taglib.jsp"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    <script src="js/common/jquery-1.9.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(function() {
      //对每行的第一个复选框实现简单的单选
      $("#tablelist input[name=goodscheck]").click(function(){
        $("#tablelist input[name=goodscheck]").attr('checked',false);
        $(this).get(0).checked=true;
      });

    //添加一行,就是将第一个tr复制,默认有一个tr
      $("#addbtn").click(function(){
        var tr =$("#tablelist tr").eq(0);
        var temptr=$(tr).clone(true); //复制tr
        $("input",temptr).val(''); //将tr下的值清空
        $("#tablelist").append(temptr);
      });
    //删除一行,至少有两个tr才能删除
      $("#delbtn").click(function(){
        if($("#tablelist tr").length>1){
          var checks = $("#tablelist input[name=goodscheck]:checked");
          if(checks && checks.length==1){
          $(checks).parent().parent().remove();
        }
      }
    });
    //提交表单
      $("#submit").click(function(){
        refresh('tablelist');
        testForm.submit();
      });

    });
    //后台接收的是数组,因此需要刷新数组的索引值。如果刷新提交的索引为userTests[0]和userTests[2](假如userTests[1]被删除),
    //后台的List集合的大小为3,索引为1的对象被认为是null.
    function refresh(jq){
      $("#"+jq+" tr").each(function(j){
        $(this).children('td').children('input').each(function(){
          var curname = $(this).attr('name');
          if(curname){
            var curnamearr = curname.split(".") ;
            if(curnamearr && curnamearr.length>1){
              var val="";
              for(var i=1;i<curnamearr.length;i++){
                val+="."+curnamearr[i];
              }
            $(this).attr('name','userTests['+j+']'+val);
          }
        }
      });
    });
    }
    </script>
    </head>
    <body>
    <s:form action="login/test.do" id='testForm'>
      <table id="tablelist">
        <tr>
          <td><input type="checkbox" name="goodscheck"></td>
          <td><input type="text" name="userTests[0].name"/></td>
          <td><input type="text" name="userTests[0].jtCode"/></td>
          <td><input type="text" name="userTests[0].code"/></td>
          <td><input type="text" name="userTests[0].operator.code"/></td>
        </tr>
      </table>
      <s:submit id="submit" value="提交"></s:submit>
    </s:form>
    <br>
      <input type="button" id="addbtn" value="添加">
      <input type="button" id="delbtn" value="删除">
    </body>
    </html>

    2、后台action代码:

      private List<UserTest> userTests; //get set方法省略 

      public void test() {
        if (userTests!=null) {
          for(UserTest userTest: userTests){
            logger.info(" ============ "+userTest +" operator: "+userTest.getOperator().getCode());
          }
        }else{
          logger.info(" ============ userTest is null ");
        }
      }

    3、javaBean对象

    public class UserTest {
      private String name;
      private String code;
      private String jtCode;
      private TBLOperator operator;

      ...get set 

    public class TBLOperator implements Serializable {
      private String code;

    4、测试数据:

    13:23:21,524 INFO [LoginAction] ============ UserTest [name=1, code=, jtCode=, operator=com.cjonline.foundation.evisa.entity.TBLOperator@1225261] operator: 11
    13:23:21,524 INFO [LoginAction] ============ UserTest [name=2, code=, jtCode=, operator=com.cjonline.foundation.evisa.entity.TBLOperator@355104] operator: 22
    13:23:21,524 INFO [LoginAction] ============ UserTest [name=4, code=, jtCode=, operator=com.cjonline.foundation.evisa.entity.TBLOperator@59e5ec] operator: 44444444
    13:23:21,524 INFO [LoginAction] ============ UserTest [name=5, code=, jtCode=, operator=com.cjonline.foundation.evisa.entity.TBLOperator@5f77e] operator: 5555555555

  • 相关阅读:
    TOJ 2710: 过河 路径压缩
    树状数组模板
    TOJ 2017: N-Credible Mazes
    TOJ 4804: 树网的核
    Codeforces Round #440 (Div. 2, based on Technocup 2018 Elimination Round 2)
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
    TOJ 2541: Paper Cutting
    CODE FESTIVAL 2017 qual B
    hiho[Offer收割]编程练习赛30
    Codeforces Round #437 (Div. 2, based on MemSQL Start[c]UP 3.0
  • 原文地址:https://www.cnblogs.com/lbangel/p/3148084.html
Copyright © 2011-2022 走看看