Bonjour à tous,
Je développe une application Web Struts en utilisant le plugin de JQuery.
J'aimerais utiliser la validation de formulaire en Ajax grâce à ce plugin.
Voici mon Action et sa classe mère (j'ai retiré certaines méthodes et attributs):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 @Namespace("/actions") @ParentPackage("actions") @InterceptorRef(value = "jsonValidationWorkflowStack") @Validations(requiredFields = { @RequiredFieldValidator(type = ValidatorType.FIELD, fieldName = "prospect.raisonSociale", message = "raison sociale?"), @RequiredFieldValidator(type = ValidatorType.FIELD, fieldName = "prospect.enseigneSigle", message = "enseigne?") }) public class AppelsAction extends AbstractProspectionAction { private static final long serialVersionUID = 1L; private static Log log = LogFactory.getLog(AppelsAction.class); public AppelsAction() { super(); } @Action(value = "updateAppel", results = { @Result(name = SUCCESS, location = "/jsp/viewAppel.jsp"), @Result(name = INPUT, location = "/jsp/viewAppel.jsp"), @Result(name = Constants._BLANK, location = "/jsp/_blank.html") }) public String updateAppel() throws Exception, DAOException { if (getModel().getProspect().getId() != null) { update(); return SUCCESS; } else return ERROR; } }Voici mon formulaire se trouvant dans une <sj:dialog>:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 public class AbstractProspectionAction extends ActionSupport implements ModelDriven<FicheProspectModel>, Preparable, SessionAware, ParameterAware{ private static Log log = LogFactory.getLog(ImportProspectAction.class); protected Map<String, Object> session; protected Map<String, String[]> parameters; public AbstractProspectionAction() { super(); } protected void update() throws Exception { getModel().setProspect( ServiceLocator.getInstance().getServiceMetier() .updateProspect(getModel().getProspect())); } /* * Le model retourné est celui stocké en session * @see com.opensymphony.xwork2.ModelDriven#getModel() */ @Override public FicheProspectModel getModel() { if (session.get(Constants.CURRENT_PROSPECT_KEY) == null) session.put(Constants.CURRENT_PROSPECT_KEY, new FicheProspectModel()); return (FicheProspectModel) session.get(Constants.CURRENT_PROSPECT_KEY); } @Override public void setParameters(Map<String, String[]> arg0) { this.parameters = arg0; } @Override public void setSession(Map<String, Object> arg0) { this.session = arg0; } }A chaque submit, la validation se fait mais j'obtiens toujours l'objet JSON avec les attributs en erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 ... <sj:head jqueryui="true"/> <script language="JavaScript" src="${pageContext.request.contextPath}/struts/utils.js" type="text/javascript"></script> <script language="JavaScript" src="${pageContext.request.contextPath}/struts/xhtml/validation.js" type="text/javascript"></script> ... <s:form id="ficheForm" action="updateAppel" theme="xhtml"> <table> <tr> <td colspan="2" style="border-bottom: 1px solid black;"> <div id="entete" class="element"> <table> <tr> <td> <s:textfield id="raisonSociale2" key="ficheprospect.raisonsociale" name="prospect.raisonSociale" maxlength="100" size="40" /> <s:textfield key="ficheprospect.enseignesigle" name="prospect.enseigneSigle" maxlength="50" size="25" /> </td> </tr> ......... </table> <sj:submit id="buttonSendFiche" onCompleteTopics="complete" onBeforeTopics="beforeSendInfoForm" targets="_blank" listenTopics="sendFicheForm" validate="true" /> </s:form>
Bien qu'ils soient bien initialisés dans le formulaire! J'ai l'impression que l'intercepteur ne prend pas le bon modèle. Faut-il ajouter quelques paramètres ? Mon modèle étant un Proxy sur une entité JPA.
Code : Sélectionner tout - Visualiser dans une fenêtre à part { "fieldErrors": {"prospect.raisonSociale":["raison sociale?"],"prospect.enseigneSigle":["enseigne?"]}}
Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?
Merci d'avance pour votre aide.
Partager