替换或隐藏servlet中的类似值



问题:

我正在从数据库中检索值,它将和主管和审查员的availabilityID相匹配。但是,如果这两者之间没有availabilityID匹配,则默认情况下availabilityID将为0。

我在servlet中设置了一个条件,如果两个availabilityID都为0,我想用查询选择的任何数字替换它。

我的servlet的一部分:

 for (int i=0 ; i<studentID.length ; i++){
     FreeBean free = new FreeBean();
     free = GenerateScheduleDAO.getFree(supervisorID[i],examinerID[i]);
     nt SVavailableID = free.getAvailableID();
     int EXavailableID = free.getAvailableID();
     Date FreeDate = free.getFreeDate();

     out.println("<td>"+ studentID[i]+"</td>");
     out.println("<td> Hello </td>");
     out.println("<td>"+ supervisorID[i] +"</td>");
     out.println("<td>"+ examinerID[i] +"</td>");
     out.println("<td>"+ SVavailableID+"</td>");
     out.println("<td>"+ EXavailableID+"</td>");
     out.println("<td>"+ FreeDate+"</td>");
     out.println("</tr>");
     if (SVavailableID ==0 && EXavailableID ==0 )
     {
        free= GenerateScheduleDAO.getOtherFree(supervisorID[i],examinerID[i]);
        int otherSVavailableID = free.getAvailableID();
        int otherEXavailableID = free.getAvailableID();
        out.println("<tr>");
        out.println("<td>"+ studentID[i]+"</td>");
        out.println("<td> Hello </td>");
        out.println("<td>"+ supervisorID[i] +"</td>");
        out.println("<td>"+ examinerID[i] +"</td>");
        out.println("<td>"+ otherSVavailableID+"</td>");
        out.println("<td>"+ otherEXavailableID+"</td>");
        out.println("<td>"+ FreeDate+"</td>");
        out.println("</tr>");
     }
}// student loop

我知道我的结果是这样的:

Student Name | Project Title  | Supervisor Name |  Examiner Name |    Presentation 1 | Presentation 2 |   Date
     abc          1111               tan               tin               0                    0          1/1/16
     abc          1111               tan               tin               12                  12         1/1/16

第一行显示,主管和审查员的availabilityID均为0。因此,它将执行IF语句,并为它们找到另一个可能的availabilityID。因此,它将复制一行,其中一行由0组成,另一行由新值组成。

如何用新值替换同时为0的行。或者至少在availabilityID=0的情况下隐藏该行,并且只显示检索到的新值。有什么有效的方法吗?

我认为您所需要做的就是确保您只执行一个逻辑流。在正确的位置使用if语句将使您实现这一点。

for (int i=0; i < studentID.length; i++) {
    FreeBean free = new FreeBean();
    free = GenerateScheduleDAO.getFree(supervisorID[i],examinerID[i]);
    int SVavailableID = free.getAvailableID();
    int EXavailableID = free.getAvailableID();
    Date FreeDate = free.getFreeDate();
    // handle the edge case here
    if (SVavailableID == 0 && EXavailableID == 0) {
        free = GenerateScheduleDAO.getOtherFree(supervisorID[i],examinerID[i]);
        SVavailableID = free.getAvailableID();
        EXavailableID = free.getAvailableID();
    }
    // now print out each record only one time
    out.println("<tr>");
    out.println("<td>"+ studentID[i]+"</td>");
    out.println("<td> Hello </td>");
    out.println("<td>"+ supervisorID[i] +"</td>");
    out.println("<td>"+ examinerID[i] +"</td>");
    out.println("<td>"+ SVavailableID+"</td>");
    out.println("<td>"+ EXavailableID+"</td>");
    out.println("<td>"+ FreeDate+"</td>");
    out.println("</tr>");
}

解决问题的另一种方法是让SQL查询为您处理双零值。

最新更新