不使用表单更新单个JSP页面元素

时间:2014-02-09 00:10:34

标签: java jquery jsp struts

在我的Struts2 / Java应用程序中,我允许用户从JQGrid向应用程序发送数据。我正在使用“saverow”函数循环遍历每个选定的行并提交已编辑的单元格。这个函数在一个单独的js文件中,它包含在我的JSP中。

function editRows(){


    for (...){
        ...
        ...
        ...
        jQuery('#myGrid').jqGrid('saveRow,rowID,false,null,null,aftersavefunc);
    }

    getResponse();

}

从此函数提交数据后,我的操作类中的许多类变量都会更新。我使用aftersavefunc来设置隐藏的jqgrid单元格的值(jqgrid'setCell'),以便我稍后可以从网格中调用它们。

我有其他值,只显示在div中。这些值在应用程序执行后也会在应用程序中更新。 在我执行上面提到的editRows()函数时,以下div已经可见并显示div中每个字段的值。这些初始div值是结果提交的上一个表格。这是我的JSP中div的样子。

<div id="headerBar">
  <table>
      <tr>
          <td>Total Items:  <s:property value="strutsActionName.totalItems</td>
          ...
          ...
          ...
      </tr>
  </table>      
</div>

因此,例如,当我的函数editRows正在执行时,div已经在网页上显示“totalItems”的值。它看起来像这样:

Total Items:  5

执行editRows函数后,“totalItems”的值已在应用程序中更新。 java动作类具有totalRows的最新值。

当循环结束时,editRows函数正在调用另一个函数getResponse()。 getResponse函数用于获取我使用“saverow”的“aftersavefunc”参数设置的隐藏jqgrid值。它使用jqGrid('getCell')来获取那些隐藏的jqGrid单元格的更新值。

我想让getResponse()函数也刷新“totalItems”的值。该值不在jqGrid中。我需要刷新单个字段并获取更新的值。例如,在editRows()完成后,“totalItems”的值可能会从5加倍到10。

在我的getResponse()函数中,我尝试使用以下内容更新此值,但它没有用。

document.getElementById('headerBar').reload

我只需更新此div中的值而无需提交表单。

1 个答案:

答案 0 :(得分:0)

属性标记在服务器端处理,因此在将请求发送到服务器之前不会更新。

正如我所看到的,最好的方法是将属性值放在一个id为span或p的元素中,然后使用document.getElemenrById检索该元素并在检索其后从javascript更改其内容新价值。