Struts 2在Action类中获取参数

时间:2012-09-03 08:40:19

标签: jquery ajax struts2

我使用Struts 2和Ajax。我无法在Action类中获取参数。我有一个这样的表格:

<s:form id="form" onSubmit="sendAjaxRequest();">
    <s:textfield  name="libelle" label="Libelle" />
    <s:textfield name="id" label="id" />
    <s:submit value="Valider" />
    <s:reset value="Effacer" />
</s:form>

当我检查在HTTP Reader中发送的请求时:

Content-length contains libelle=Test&id=13

我的要求很好!

在我的动作类中:

public class MyAction extends ActionSupport {
    private String libelle;
    private Integer id;

    public String getLibelle() {
        return auteur;
    }

    public void setLibelle(String libelle) {
        this.libelle = libelle;
    }

    public String getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
    public String execute() {
        System.out.println("Libelle " + libelle);
        System.out.println("Libelle " + this.libelle);
    }
}

在我的动作libelle和这个。 libelle是null。我不知道我是否犯了错误。如果有人能给我帮助。感谢。

我发现了我的问题但不是解决方案。我检查生成的HTML代码,我看到以下一个:

<form id="form" name="form" action="/path/MyOtherAction.action" method="post" onSubmit="sendAjaxRequest();">
  <table class="wwFormTable">
      <tr>
          <td class="tdLabel"><label for="form_libelle" class="label">Libelle:</label></td>
          <td><input type="text" name="libelle" value="" id="form_libelle"/></td>
      </tr>
      <tr>
          <td class="tdLabel"><label for="form_id" class="label">id:</label></td>
          <td><input type="text" name="ide" value="" id="form_id"/></td>
      </tr>
...
          <td colspan="2"><div align="right"><input type="submit" id="form_0" value="Valider"/>
..
          <td colspan="2"><div align="right"><input type="reset" value="Effacer"/>
..
  </table>
</form>

所以在我的sendAjaxRequest之前首先执行MyOtherAction。如何在我的表单中删除动作MyOtherAction? 谢谢你的阅读。

2 个答案:

答案 0 :(得分:0)

如果您使用的是jQuery,可以试试preventDefault()。这种方式MyOtherAction将不会在提交时执行。

答案 1 :(得分:0)

您可以在表单上绑定提交事件,如下所示:

$(document).ready( function() {    
    $("#form").submit( function() {
        sendAjaxRequest();
        return false; // it will stop the submit process
    });
});

当事件被捕获时,执行sendAjaxRequest()函数并且因为函数返回false,表单将不会提交给/path/MyOtherAction.action