Comment appelle les différentes méthodes définies dans une action en struts2?
Je ne suis pas familier avec struts2, mais je sais que la méthode execute() est appelée par défaut dans l'Action lors de l'appel à l'action par son nom. Mais comment faire pour appeler un autre méthode de la même classe d'action?
Dans l'exemple ci-dessous la méthode execute() est appelée lorsque j'ai mis le lien d'url en ajax comme ça: saveJSONDataAction.action
grâce à @Action annotation.
Comment l'url ressemble à appeler otherMethod() par ajax?
Classe d'Action:
@ParentPackage("json-default")
@Action(value="getJSONDataAction")
@Result(name="success", type="json")
public class JSONDataAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private List<Report> data = new ArrayList<Report>();
public JSONDataAction(){
data.add(new Report(1, "Chris", true, "2008-01-01", "orange"));
}
public String execute() {
return SUCCESS;
}
public String otherMethod() {
//do something else ..
return SUCCESS;
}
//getters and setters
}
Appel Ajax:
$.ajax({
url: "../json/saveJSONDataAction.action",
data: data,
dataType: 'json',
contentType: 'application/json',
type: 'POST',
success: function (res) {
if (res.result === 'ok') {
$console.text('Data saved');
}
}
});
Comment appeler otherMethod() la méthode par ajax?
Je pense qu'il y a une syntaxe avec le point d'exclamation pour cela - quelque chose comme
/json/saveJSONDataAction!otherMethod.action
.OriginalL'auteur Roman | 2013-06-01
Vous devez vous connecter pour publier un commentaire.
Il y a une fonctionnalité appelée Dynamic invocation de méthode:
Remarque, qu'il peut introduire de trou de sécurité... donc, assurez-vous de configurer ce comportement correctement (voir la oficial de la documentation).
Sans
strict-method-invocation
il est possible d'appeler n'importe quelle méthode.OriginalL'auteur Pavel Horal
Vous pouvez spécifier quelle méthode est exécutée dans
struts.xml
fichier. Vous avez juste besoin de remplacer la valeur par défaut, qui estexecute
.Ensuite, vous avez juste besoin d'appeler
../json/MySecondAction.action
dans votre fonction.OriginalL'auteur Armaggedon