1

私はStruts2と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リーダーで送信されたリクエストを調べると:

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は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>

したがって、MyOtherActionは、sendAjaxRequestの前に最初に実行されます。フォームのアクションMyOtherActionを削除するにはどうすればよいですか?読んでくれてありがとう。

4

2 に答える 2

0

次のようなフォームで送信イベントをバインドできます。

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

イベントがcatchの場合、sendAjaxRequest()関数は実行され、関数はfalseを返すため、フォームはに送信されません/path/MyOtherAction.action

于 2012-10-03T08:17:23.347 に答える
0

jQueryを使用している場合は、preventDefault()を試してみてください。この方法MyOtherActionは送信時に実行されません。

于 2012-09-03T14:10:54.733 に答える