Je n’arrive pas à récupérer la valeur d’un paramètre d’action (via getConfirmField) depuis le hook actionService d’un ObjectService.
J’ai essayé sans succès diverses combinaisons pour placer l’appel à getConfirmField selon les options documentées dans le javadoc. Le retour de getConfirmField est null.
Steps to reproduce
public class GcsDocument extends ObjectService {
private static final long serialVersionUID = 1L;
...
@Override
public Object actionService(String action) {
if ("pgDump".equals(action)) {
String module = /*getAction(action).getConfirmField(this.getGrant().getLang(), "gcsPgModuleName").getValue()*/"IT4itGuest_AS0";
...
return ...;
}
return null;
}
Je ne pense pas avoir déjà mis en place une action avec paramètres sur un objet service.
Je vais tester ce cas et je te tiens au courant.
Le hook actionService des objets service a été mis en place il y a longtemps, lui passer en paramètre le nom de l’action plutôt que l’action elle même n’est sans doute plus idéal.
Bon, après analyse la manière dont c’était implémenté dans le cas des objets service n’allait globalement pas.
Le hook actionService sert désormais uniquement (comme ça aurait dû être le cas depuis toujours) à surcharger, si besoin, la mécanique d’appel des actions (et pour s’aligner sur ce qu’on fait par ailleurs elle prend désormais en paramètre l’action et plus simplement le nom de l’action).
Mais pour les cas plus simples ça marche désormais comme pour toute action => si le hook actionService n’est pas implémenté, ça fait comme pour tout objet, ça appelle la méthode paramétrée dans l’action (avec accès aux paramètres si besoin), ex:
@BusinessObjectAction
public String testAction(Action action) {
ObjectField p = action.getConfirmField(getGrant().getLang(), "testParam");
return Message.formatSimpleText("Hello " + p.getValue() + " world!");
}
Ce sera livré dans le cadre de la prochaine révision 5.3.18