如何动态控制JSP表格中Observed Value对应的<td>标签显示数量
实现思路与代码示例
思路一:重构实体类(推荐,扩展性强)
把class_div中的单个观测值字段(observedValue1/observedValue2/observedValue3)改成集合存储,比如新增List<String> observedValues属性及对应的getObservedValues()方法。这样不管需要显示多少个观测值,都能动态生成对应的<td>,不用硬编码。
修改后的JSP代码片段:
<tr bgcolor=#02321D> <td><center><%=h11.getCharacteristics() %></center></td> <td><center><%=h11.getSpec() %></center></td> <% int displayNum = gcaqa.getX2(); List<String> obsList = h11.getObservedValues(); for(int i=0; i<displayNum; i++){ // 加个判断防止索引越界,虽然你确认数量不超,但留个保险 if(i < obsList.size()){ %> <td><center><%=obsList.get(i) %></center></td> <% } } %> <td><center><%=h11.getDateofAnalysis() %></center></td> </tr>
思路二:不修改实体类,直接在JSP中做条件判断
如果不想改动class_div的代码,可以直接根据gcaqa.getX2()的值,判断要显示哪几个观测值的<td>:
修改后的JSP代码片段:
<tr bgcolor=#02321D> <td><center><%=h11.getCharacteristics() %></center></td> <td><center><%=h11.getSpec() %></center></td> <% int displayNum = gcaqa.getX2(); // 显示第一个观测值 if(displayNum >= 1){ %> <td><center><%=h11.getObservedValue1() %></center></td> <% } // 显示第二个观测值 if(displayNum >= 2){ %> <td><center><%=h11.getObservedValue2() %></center></td> <% } // 显示第三个观测值(如果需要的话) if(displayNum >= 3){ %> <td><center><%=h11.getObservedValue3() %></center></td> <% } %> <td><center><%=h11.getDateofAnalysis() %></center></td> </tr>
两种思路对比:
- 思路一适合长期维护,后续观测值数量调整或增加时,无需修改JSP代码;
- 思路二属于快速修复,不用改动后端实体类,但如果后续
gcaqa.getX2()的值超过3,需要手动添加新的判断逻辑。
内容的提问来源于stack exchange,提问作者Amit K Kushwaha
相关产品推荐
相关产品推荐

