很久没写,忘光了。。
jsp代码:
 <table border="solid 1px;">
     <tr>
       <td>订单项id </td>
       <td>订单id</td>
       <td>书号</td>
       <td>书名</td>
       <td>价格</td>
       <td>书的数量</td>
     </tr>
     <c:forEach var="sonOr" items="${list}">
     <tr>
       <td>${sonOr.orderItemId}</td>
       <td>${sonOr.orderId}</td>
       <td>${sonOr.bookId}</td>
       <td>${sonOr.bookName}</td>
       <td>${sonOr.price}</td>
       <td>${sonOr.bookNum}</td>
     </tr>
      <%! Float totlePrice =  %>${sonOr.price}<%*%>${sonOr.bookNum} //自己加的,格式错误
     </c:forEach>
 <tr>
  <td></td>
  <td></td>
  <td></td>
  <td>总价格:</td>
  <td></td>
  <td><% out.print(totlePrice) %></td>//自己加的,格式错误
 </tr>   
     </table>
想输出:${sonOr.price}*${sonOr.bookNum}的总价格

解决方案 »

  1.   

    用的是jstl+EL表达式吧..${sonOr.price*sonOr.bookNum} sonOr为一个对象,该对象对应的类中有price和bookNum属性,并有get/set方法对
      

  2.   

    在<%  %>之间写java代码,任何的代码都可以。
      

  3.   

    sonOr是有price和bookNum属性,并有get/set方法对
    现在要求<c:forEach var="sonOr" items="${sonlist}">
         <tr>
           <td>${sonOr.orderItemId}</td>
           <td>${sonOr.orderId}</td>
           <td>${sonOr.bookId}</td>
           <td>${sonOr.bookName}</td>
           <td>${sonOr.price}</td>
           <td>${sonOr.bookNum}</td>
         </tr>
         </c:forEach>
    希望在for each里加个全局变量,算出,总价格  然后,out.print(总价格)
      

  4.   

    主要是格式不知道,我想在for each中算出总价格num,然后将总价格的变量 在for each外面<%=num %>
      

  5.   

    ${sonOr.price * sonOr.bookNum} 这个可以得到总价格  直接 写在<td></td>之间
      

  6.   

    因为sonOr是在for each里面定义的,而总价是在for each外面输出的。 所以直接这么写:${sonOr.price * sonOr.bookNum}  会显示can not be resolved
      

  7.   

    你在sonOr类里加一个属性,像这样,然后在页面就可以直接用private double price;
    private double bookNum;
    private double countAmount;

    public double getCountAmount() {
    double result=0;;
    if(price>0){
    result=price;
    }
    if(bookNum>0){
    result*=bookNum;
    }
    return countAmount;
    }<tr>
      <td>${sonOr.orderItemId}</td>
      <td>${sonOr.orderId}</td>
      <td>${sonOr.bookId}</td>
      <td>${sonOr.bookName}</td>
      <td>${sonOr.price}</td>
      <td>${sonOr.bookNum}</td>
      <td>${sonOr.countAmount}</td>  //直接取出结果
      </tr>
      

  8.   

    <script type="text/javascript">
    document.write(sonOr.price * sonOr.bookNum);
    </script>
      

  9.   

    <%%>可以,不一定非得用EL或者JSTL
      

  10.   

    有个精度的问题. 书的总价 result = bookNum * price; 当bookNum =1,price=16.8时,算出来为16.799999237060547   在javabean里设精度也不行  public double getTotalPrice() {
    double result = 0; if (bookNum > 0) {
    result = bookNum * price;
    BigDecimal bd = new BigDecimal(result);
    bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); }
    return result;
    }
      

  11.   

    精度的问题可以这样private double price;
        private double bookNum;
        private double countAmount;
        
        public double getCountAmount() {
            double result=0;;
            if(price>0){
                result=price;
            }
            if(bookNum>0){
                result*=bookNum;
            }
            java.text.DecimalFormat df=new java.text.DecimalFormat("#0.00"); 
            if(countAmount>0){
               df.format(countAmount); //这里你可以改一下返回的类型
            }
            return countAmount;
        }