情况是这样的,系统需要让教师按班录入学生成绩,如果录入一个学生提交一次显然不现实,我想做成图示这样(无法传图,让输入TAG,不懂怎么输什么):
批量录入,在这种情况下,前台如何给这几个台输入域命名?后台如何让这些输入域对应到相应的学生上?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主截止到2008-06-20 16:32:13的汇总数据:
    注册日期:2008-4-13
    上次登录:2008-6-20
    发帖数:4                  发帖分:110                
    结贴数:0                  结贴分:0                  
    结贴率:0.00 %        结分率:0.00 %        
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    我们学校的一个系统 是把他变成excel形式,
      

  3.   


    就是这位兄弟说的。比如有一个班,有学生30人,我要在一个页面内一次性录入30人的成绩,一次性提交。那么,在客户端的页面需要30个独立的text输入域,为了方便后台处理,应该怎么样给这30个text field命名?数据提交给后台后,在java里怎么把这些不同名字的text field跟相应的学生联系起来?假设学生ID为:a1,b1,c2...,text field分别命名为a1,b1,c2...,跟学生ID同名,那么在后台可能通过变量的名字对应相应的学生。JAVA里如何取得变量的名字?这样的处理方法是否恰当?
      

  4.   

    假设学生ID为:a1,b1,c2...,text field分别命名为a1,b1,c2...,跟学生ID同名,那么在后台可能通过变量的名字对应相应的学生。JAVA里如何取得变量的名字?这样的处理方法是否恰当?用这个方法还有一个很严重的问题,我用的MVC框架是struts2,一般情况下,页面提交数据时struts2直接保存在action中带setter的同名变量上,各个班的人数不同,我如何定义action中接收成绩的变量?
      

  5.   

    你得写个方法。或者是用个EXCEL,把要输入的数据写到里面,然后调用。
      

  6.   

    这样吧,你把学生的一个list传到jsp页面,让相应的field的名字加上学生的一些内容,这样就可以与学生对应了
      

  7.   


    现在问题是学生数量不等,struts2的action里如何定义变量?难不成又用回request.getParameterString()方法?
      

  8.   

    我只能告诉你原理吧。
    用循环把学生成绩输入text显示出来,命名为比如从1到30,可写为score[1]…………这样,然后就写入数据提交就好了啊~~
      

  9.   


    jsp传到客户端后就变为纯html文档了,请问在纯html文档中怎么把不同的text域的值变成score[1]......然后再上传到服务器?
      

  10.   


    jsp传到客户端后就变为纯html文档了,请问在纯html文档中怎么把不同的text域的值变成score[1]......然后再上传到服务器?
      

  11.   


    jsp传到客户端后就变为纯html文档了,请问在纯html文档中怎么把不同的text域的值变成score[1]......然后再上传到服务器?
      

  12.   

    把 text 的名字都命名为相同的啊,就像下面这样。<c:forEach items="${stus}" var="stu">
      $stu.name <input type="text" name="score"> <input type="hidden" name="id" value="$stu.id"><br/>
    </c:forEach>后台可以使用:String[] id = request.getParameterValues("id");
    String[] score = request.getParameterValues("score");得到这些数组id[0] 和 score[0] 都是一一对应的
      

  13.   

    这个方法也可以的!最好LZ查一下struts的批量上传。就是不定数目的上传!情况可你一样
      

  14.   

    不好意思,楼上各位,昨晚电脑出了点问题,一下子提交了好多次,后来想声明一下,系统却老说怀疑我刷屏,不让发贴了。这个问题我暂时解决了,为什么说是暂时呢?因为我没用struts2的参数自动注入,而是用回了传统的request来提取参数,方法就是根据班级学生的ID查找request中是否存在相应的变量Key,如有,则提取出来,没有就跳过。
    (在前台,我直接使用学生ID作为text的名字)具体代码如下:
            List<Stdt> stdts= stdtSvc.getTmpTeamStdts(tmpTeamID);//获得班级的学生列表
            HttpServletRequest request= ServletActionContext.getRequest();//获得request对象
            Map<String,String> scores=request.getParameterMap();//获得上传的参数列表
            String stdtID;
            Score score;
            double dscore;
            Stdt stdt;
            for (int i=0;i<stdts.size();i++) {//遍历班级的学生
                stdt= stdts.get(i);
                stdtID=stdt.getStdtid();
                if (scores.containsKey(stdtID)) {//查询是否有该学生ID为KEY的上传参数,有则执行更新操作
                    dscore=Float.valueOf(request.getParameter(stdtID));//注释(1)
                    score= (Score) this.getHibernateTemplate().get(Score.class,new ScorePK(tmpteam.getNamedopencrs().getNamedopencrsid(),termID,stdtID));
                    score.setScore(new BigDecimal(dscore));
                    try {
                        this.getHibernateTemplate().update(score);
                    } catch (HibernateException e) {
                        result=false;
                    }
                }
            }
    写这段代码时一直有一个问题搞不清楚,就是标着“注释(1)”的那一行,按理说,类型为MAP的变量scores是上传的参数名字/参数值的列表,MAP的get(key)方法应该返回参数值,但我把request.getgetParameter(stdtID)换成scores.get(stdtID),运行时老报错java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String,我搞不明白哪来的“[Ljava.lang.String”类型?我写了一段非b/s代码测试了一下MAP的get(key)运行是正常的,不懂为什么在B/S里会出这样的错。