scriptlet被错误地执行了

时间:2011-08-02 15:33:59

标签: jsp scriptlet

以下代码:

<button type="button" id="button" onclick="<%cart.removeItem(0);%>">Click me</button>
假设在单击按钮时执行

。但是,

 "<%cart.removeItem(0);%>"
在没有单击按钮的情况下刷新页面时正在执行

。为什么会这样?

干杯。

这是完整的消息来源。

   <html>
   <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
   </head>
   <body>
    <jsp:useBean id="cart" scope="session" class="myBeans.cart" />
    <%
    cart.addItem("aji", "1000", "1");
    cart.addItem("ewer", "200", "1");
    cart.addItem("dfwerweji", "10", "1");
    cart.addItem("ldsjioi", "1320", "1");

    String[] prodNames = cart.getProdNames();
    double[] prices = cart.getProdPrices();
    int[] qtys = cart.getProdQtys();
    double total = 0;

    for(int i=0; i<prodNames.length; i++){
    total += prices[i]*qtys[i];
    out.println(prodNames[i]);
    out.println(" " + prices[i] + " ");
    out.println("<input type=text name=newQty value=" + qtys[i] + ">");
    out.println(" " + prices[i] * qtys[i]);
    }
    %>
    <br/>
    <button type="button" id="button" onclick="<%cart.removeItem(0);%>">Click me</button>
    </body>
    </html>

1 个答案:

答案 0 :(得分:2)

我认为你在这里混淆了你的语言。我怀疑'cart'是一个Java对象,你只能在客户端修改JavaScript对象。你必须有这样的东西才能使它发挥作用:

<script> 
  doRemoveFirst = function() { new Ajax.Request('removeFirst.page'); }; 
</script>
<button type="button" id="button" onclick="doRemoveFirst();">Click me</button>

然后在服务器上有一个名为'removeFirst'的页面,它将从Java对象中删除该对象(可能保存在会话中?),您可以相应地更新页面。

编辑:这是一张值得帮助的图片。对角线的所有东西都是客户端的,而一切都是服务器端的。

This Image

编辑2 :删除并修复用户的页面

我会说(假设jQuery)这可能适合你。

$(".item-row").first().remove(); 
$(".item-row").each(function(idx, el) {
  var elem = $(el).children().find('.index-cell');
  elem.text(+elem.text() - 1);
});