在Struts操作执行一些calcul

时间:2015-10-02 14:09:56

标签: javascript java jsp struts

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

我没有成功的事情:

我在JSP中创建了一个隐藏属性,为true或false状态创建了2个条件。默认情况下(在Java中的表单中)给出属性的错误状态并且工作正常。 但是当我在表单中更改属性的值时,JSP中没有任何更改,并且属性仍然具有false值。 我们无法转到另一个页面,我们会停留在同一个jsp页面。

JSP是不是实时评估了这个属性的值?

在action和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>

1 个答案:

答案 0 :(得分:2)

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

<强> FORM

<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控制器中,你需要的所有计算和动作返回类型都必须是JSON(看看这里Strtus2 json plugin。Ajax魔法!