小弟在学校给老师做一个病例录入的B/S项目,用JSP开发,现在遇到一个瓶颈,望高人能指点,问题描述如下:
1.页面的初始状态是这样的:2.一个病历录入系统,用户先选择症状,根据用户选择的不同症状,系统会显示该症状对应的“部位”、“性质”和“加重/缓解因素”供用户选择:3.用户可以点击页面右边的“添加症状”按钮,可以继续添加症状,可以添加n条症状,系统根据用户添加的症状,显示该症状对应的“部位”、“性质”和“加重/缓解因素”供用户选择。“添加症状”这个功能是用Javascript动态生成表格内容来实现的:4.上图是添加了两条症状。
5.小弟遇到的问题是这样的,当用户添加好了症状之后,单击页面下方的保存按钮,所填写的症状信息将全部保存进入数据库。此次录入完成,关闭浏览器。当用户需要修改已经录入的信息之后,在系统登录页面填写病历号,系统需要将他之前录入的症状信息重新显示在页面上。我知道如何从数据库中把前一次录入的信息取出来,但问题是,取出来之后,如何显示在页面上?比如用户在录入的时候,添加了两个症状,因为添加症状是用Javascript动态生成表格,所以我不知道如何将从数据库中取到的数据放到页面上。
请各位各抒己见,帮小弟解决这个问题,此问题不解决,项目无法继续下去。拜谢

解决方案 »

  1.   

    先访问后台,数据库查数据,查出来存入request的attribute里面去。后台返回的JSP页面里,JS通过EL表达式获得这个数据。var a='${object.field}';页面加载后,JS根据这个数据去修改页面显示内容。注意加单引号,JS中夹杂EL表达式,容易忽视空值问题,JS会把EL的空值当''空字符串处理;另外这个必须写在页面JS里,不能在JS文件里。
      

  2.   

    "但问题是,取出来之后,如何显示在页面上?比如用户在录入的时候,添加了两个症状,因为添加症状是用Javascript动态生成表格,所以我不知道如何将从数据库中取到的数据放到页面上。"我觉得你是不是虽然在页面上把病症分成几行处理了,但是把几条病症都存入一条数据库记录去了?
    你的数据库设计,这个病症对象应该是独立的表,每个病症对应一行记录,而一个病人每次提交对应一个病单,病单可以包含1-N个病症,病单是另外的表,通过主外键和病症记录表关联。
      

  3.   

    lz实在没太懂你在纠结什么。表格不管是不是动态生成的。你在后台返回一个list或json。在前端解析了循环到对应的地方显示不就可以了么。这和一般的流程有什么区别?
      

  4.   

    也就是说,用户是单击页面的“增加症状”按钮,触发的事件就是用javascript动态增加一行表格,表格中有文本框,有下拉框。而我纠结的就是,取到数据后,用什么方式替代这个单击页面的“增加症状”按钮,然后将数据显示出来?请指教
      

  5.   

    你那些原来 用户需要的症状选项 是动态生成的? 而不是静态的?这样也很好办呀,你只需把原来的代码 改动一下就好了,用ajax 获取你的json、xml对象让后给你的 js里面的属性赋值,有的赋值没有的 让它为空不就行了
    比如:  data.row 是通过ajax获取的对象接下来就好办了  if(data.row.name){
                     var name=data.row.name;
                     $("#name").html(name);
                     }else{
                     $("#name").html("");}
    那么页面就会显示 name的名字了<ul>
    <li><label id="suid1"></label></li>
    </ul>
        
    上面是思路 自己去看看
      

  6.   

    偶扫了一眼。。
    后台你取到某些数据,如:request.setAttribute("key1", "value1");
    前台要显示出数据,则:
    <c:if test="${not empty key1}">
      <input value="${key1}">
    </c:if>
    意思是:如果存在key1,那么我们就开始在当前位置编造含有后台数据的html代码,比如这个例子,我们编造了一个文本框,里边的值则是你从后台取得的数据。
    用c标签前,记得<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      

  7.   

    楼主你只是需要显示病人的所有病状吗?还是显示出来后还可以进行修改还可以继续添加新的病状呢?
    如果只是显示出来给病人查看,那和一般从数据库中取出来放到list中直接遍历就可以了,和js动态有什么关系了
    如果显示并且提供修改和添加功能,那么在将你的数据遍历时需要按照你动态生成表格的名字或id保持一致,
    这样就能保证你继续添加一行时和你前面的数据保证在同一个表格中
    当然你需要将添加行的下标也要修改,改成你显示数据后行的下标,比如你显示了2条,那么你当前添加行的起始应该就是2开始了,而不是从0开始添加了,
    我不知道楼主是不是这个意思
      

  8.   

    如何模拟动态添加的表格动作 就是你需要将你遍历的数据表格的name或者
    id啊,或者其他tr上的name或id属性都和你js添加时的一样不就可以模拟动态添加的效果了吗?
    你只要保证循环遍历出来的数据外面套的表格和行中的属性保持一致就可以了
      

  9.   

    你是将那些数据以怎么样的形式保存的,是有一个专门的表来记录还是怎样,
    如果是有专门的表记录,你只要通过表的链接,然后将那些数据放在一个对象中,然后传到jsp页面上,
    在jsp页面中,通过${object.name}获取,在使用<td><c:if test=“${object.name==‘xx’}”>隐痛<c:if></td>进行判断,小菜鸟回复,请大神见谅!