我使用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? 谢谢你的阅读。
答案 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
。