Struts2 avec JQuery Plugin: Problème de validation Ajax
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:
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:
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:
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:
{ "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.