2017-10-10 4 views
2

J'ai un problème avec un select dans un itérateur. Chaque fois que j'utilise la valeur index de mon itérateur status dans la propriété name du select, le formulaire n'est pas envoyé correctement.Struts2 - Sélectionnez ne fonctionne pas dans l'itérateur

Dans mon code, j'utilise un first iterator pour parcourir une liste de jours et un second iterator pour parcourir mes enregistrements afin d'afficher et de modifier leurs données.

page.jsp

<s:iterator value="daysOfWeek" var="jour" status="stat"> 
    <div class="gu desk-s1 desk-w2" id="plage${stat.index}"> 
     <s:text name="%{#jour}"/> 
     <s:submit type="button" action="addPlage/%{#stat.index}">+</s:submit> 
     <s:iterator value="plageRecords" var="plage" status="innserStat"> 
      <s:if test="%{#plage.jour == #stat.index}"> 
       <s:include value="plage/plage_cell.jsp"/> 
      </s:if> 
     </s:iterator> 
    </div> 
</s:iterator> 

page_cell.jsp

<div class="g rev-width rev-top-m1"> 
    <div class="gu desk-w6"> 
     <label><s:text name="admin.plage.label.endHour" /></label> 
     <s:fielderror class="fieldError" 
         fieldName="plageRecords[%{#innserStat.index}].heureFin"/> 
    </div> 
    <div class="gu desk-w10"> 
     <s:select name="plageRecords[%{#innserStat.index}].heureFin" 
        cssClass="rev-side-m1 rev-width" list="endHourList"/> 
    </div> 
</div> 
+0

"le formulaire n'est pas soumis correctement." - des informations plus spécifiques? – Thomas

+0

Oui bien sûr, l'action n'est jamais atteinte et retourne 'input', même si la validation n'est pas faite. –

+1

Avez-vous vérifié à quoi ressemble le corps du message? Il vaudrait mieux poster un [mcve]. – Thomas

Répondre

1

Vous avez tort expression dans le cas tag:

<s:if test="%{#plage.jour == #stat.index}"> 

il devrait être

<s:if test="%{#plage.jour == #jour}"> 

si l'expression est non-évaluée ou évalué à false tag puis sélectionnez ne sera jamais ajouté à la forme, et le formdata ne sera jamais soumis.

+0

Vous devriez accepter cette réponse. –