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;
    }
}
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;
    }
}
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
...
<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>
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
 { "fieldErrors": {"prospect.raisonSociale":["raison sociale?"],"prospect.enseigneSigle":["enseigne?"]}}
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.

Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?

Merci d'avance pour votre aide.