JSP增量表行计算总和并返回到带有Bean的jsp

时间:2014-05-30 10:18:08

标签: java jsp servlets javabeans

我在JSP中有一个表。在那里我有3个输入文本的值,当我点击提交然后我再次获得JSP表,其中一行多了三行输入结果。

index.jsp这个jsp是我得到表的值和总和然后我提交给servlet

<form method="post" action="Servlet">
        <table id="sum_table">
          <tbody>
          <tr>
                        <td class="numtotal">TOTAL</td>
                        <td class="num">1</td><td class="num">2</td><td class="num">3</td><td class="num">
                    </tr>   
            <tr>
                <td><input type="text" value="${bean.sum}"maxlength=3 readonly="readonly"></TD>
                <c:forEach items="${bean.values}" var="value" varStatus="loop">
                    <c:if test="${not loop.first and loop.index % 3 == 0}">
                        </tr><tr>
                    </c:if>
                    <td><input type="text" name="value" value="${value}"  maxlength="2"/></td>
                </c:forEach>
            </tr>
          </tbody>
        </table>
             <p><input type="submit" id="submit"/></p>
             <p><input type="button" id="btnAdd" value="+"/></p>
    </form>

Servlet.java这里我设置值和值的总和并发送到索引jsp

Bean bean = new Bean(); 
        String[] values= request.getParameterValues("value");

        if (values == null) {
            values= new String[3];
            for(int i=0; i< 3;i++) {
                values[i]= "0";
            }
        }
        Integer sum= 0;
        for(int i = 0; i < values.length; i++)
        {
            bean.setSum(sum = sum + Integer.valueOf(values[i]));
            bean.setValues(values);
        }   
         request.setAttribute("bean", bean);
            request.getRequestDispatcher("/index.jsp").forward(request, response);

这是我的bean类:

public class Bean {

    String[] values;
    Integer sum;

    public Integer getSum() {return sum;}
    public void setSum(Integer integer) {this.sum = integer;}

    public String[] getValues() {return values;}
    public void setValues(String[] valores) {this.values= values;}

}

一行正常,例如:

TOTAL | VALUE1 | VALUE2 | VALUE3
 10   |    2   |   3    |  5

但是如果我做一个增加此行的按钮来做另一个总和,那么还有三个值可能吗?

1 个答案:

答案 0 :(得分:0)

首先,如果要显示三行值的多行,则应在其自己的行上显示总计。接下来,处理表单中的多个提交按钮并不容易,因为您必须测试单击按钮的标签是什么,一旦进入i18n就会导致复杂的操作。您应该考虑使用复选框和单个提交按钮。

此外,循环之后,循环中有bean.setValues(values)

无论如何,<input type="button" .../>不提交任何内容,只能触发javascript。

现在我想你找到了一种在servlet中确定要添加新行的方法(复选框或2个提交按钮)。您可以将bean.setValues(values)(离开循环......)更改为:

if (needAddRow) {
    String[] val2 = new String[values.length + 3];
    val2[0] = 0;
    val2[1] = 0;
    val2[2] = 0;
    for (int i=0; i< values.length; i++) {
        val[i+3] = values[i];
    }
    bean.setValues(val2);
}
else {
    bean.setValues(values);
}

小心:未经测试......