在 Struts 动作之后执行 javascript 函数做一些计算

Execute javascript function after Struts action do some calcul

我想解释一下,因为标题可能不太清楚。 我们有一个带有提交按钮的 jsp 表单,该按钮调用一个操作。 在这个活动中,我们进入一个服务,它执行一些方法来做一些微积分。其中一个微积分(高于或低于阈值的值)必须 change/execute 一个 javascript 函数。换句话说,在需要能够在同一个 jsp 页面中执行 javascript 函数的操作演算之后。

我做了什么没有成功:

我在 JSP 中创建了一个隐藏的 属性 和 2 个用于真或假状态的条件。默认情况下(在 Java 中的表单中)给 属性 假状态并且工作正常。 但是,当我以形式更改 属性 的值时,JSP 没有任何变化,并且 属性 仍然具有错误值。 我们不能转到另一个页面,我们停留在同一个 jsp 页面。

JSP 没有实时评估这个 属性 的值?

在操作和 jsp 之间进行通信的任何其他选项?

JSP 属性

<nested:hidden property="quitProgressBar"></nested:hidden>
            <nested:equal value="true" property="quitProgressBar">
                <script>
            alert('Prueba JVE');
      </script>
            </nested:equal>
            <nested:equal value="false" property="quitProgressBar">
                <script>
        alert('Recien cargado');
      </script>
            </nested:equal>

您可以尝试通过 Ajax 调用 Struts2 操作。例如:

表格

<form id="myForm">
    <input id="param1" name="param1" type="text" />
    <input id="param2" name="param2" type="text" />

    <button type="submit">Submit</submit>
</form>

JQUERY

$(document).ready(function() {
    $('#myForm').submit(function() {
        var param1 = $(this).find('#param1');
        var param2 = $(this).find('#param2');

        $.ajax({
          url: '/route/to/action',
          type: 'POST',
          data: {
            'param1': param1, /* setParam1(String param1) required!*/
            'param2': param2, /* setParam2(String param2) required!*/
          },
          dataType: 'json',
          complete: function (jqXHR, textStatus) {
              // DO SOMETHING
          },
          success: function (response) {
              // DO SOMETHING
          },
          error: function (jqXhr, textStatus, errorThrown) {
              console.log(jqXhr);
              console.log(textStatus);
              console.log(errorThrown);
              // DO SOMETHING
          }
        });
    });
});

在 Struts2 控制器中执行您需要的所有计算,并且操作 return 类型必须是 JSON(看看这里 Strtus2 json plugin。Ajax 魔法!