2010-08-26 9 views
1

Ma glace: dataTable ressemble ci-dessous: -Obtenir une valeur de la colonne de la glace: dataTable dans le validateur d'une autre colonne

<ice:dataTable id="someTbl" var="someVar" value="#{someBean.someList}" > 
    <ice:column> 
     <f:facet name="header"> <ice:outputText value="#{msgs.tblCol1}"> </f:facet> 
     <ice:outputText value="#{someVar.name}"/> 
    </ice:column> 
    <ice:column> 
     <f:facet name="header"> <ice:outputText value="#{msgs.tblCol2}"> </f:facet> 
     <ice:selectInputDate id="startCal" value="#{someVar.startTime}" 
       renderAsPopup="true" renderYearAsDropdown="true"  
       renderMonthAsDropdown="true" partialSubmit="true" > 
       <f:convertDateTime pattern="MM/dd/yyyy HH:mm" type="date" timeZone="EST"/> 
     </ice:selectInputDate> 
    </ice:column> 
    <ice:column> 
     <f:facet name="header"> <ice:outputText value="#{msgs.tblCol3}"> </f:facet> 
     <ice:selectInputDate id="endCal" value="#{someVar.endTime}" 
       renderAsPopup="true" renderYearAsDropdown="true"  
       renderMonthAsDropdown="true" partialSubmit="true" validator="#{someBean.validateEndtime}"> 
       <f:convertDateTime pattern="MM/dd/yyyy HH:mm" type="date" timeZone="EST"/> 
     </ice:selectInputDate> 
    </ice:column> 
</ice:dataTable> 

Lorsque le validateur sur le deuxième calendrier (id « endCal ») sur la ligne est invoqué, je veux obtenir la valeur du premier calendrier (id "startCal") sur cette ligne dans mon bean backing. Y a-t-il un moyen d'accomplir cela? Je me demandais à propos de ice: rowSelector mais j'ai remarqué que je ne peux obtenir que le rowId de la sélection, ce qui signifie que je devrai traverser la "someBean.someList" dans la méthode validator pour trouver les valeurs de cette entrée.

+0

Si vous regardez cette question, vous devriez également regarder ce genre de question pertinente http://stackoverflow.com/questions/2766287/how-to-map-icefaces-icese lectinputdate-component-on-a-java-util-calendrier-champ – CoolBeans

Répondre

1

Tout d'abord lier la première entrée à grains:

<ice:selectInputDate id="startCal" binding="#{someBean.startCalComponent}" ... > 

avec cette propriété:

private UIInput startCalComponent; // +getter+setter 

Ensuite, dans votre méthode SomeBean#validateEndtime() faire:

Date startTime = (Date) startCalComponent.getValue(); 
+0

Awesome BalusC. J'obtiens un classCastException sur getValue() mais je peux le réparer facilement. Merci beaucoup! – CoolBeans

+0

De rien. Je ne fais pas de IceFaces, donc je ne sais pas de haut ce que 'selectInputDate' attend. Je l'ai simplement supposé être 'java.util.Date'. – BalusC

+0

Oui c'est ma deuxième tentative à iceFaces donc je suis assez novice moi-même. Il a ses avantages et ses inconvénients. – CoolBeans

Questions connexes