Получение значения столбца из ice: dataTable в валидаторе другого столбца - PullRequest
1 голос
/ 26 августа 2010

Мой лед: таблица данных выглядит следующим образом: -

<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> 

Когда вызывается валидатор во втором календаре (id "endCal") в строке, я хочу получить значение первого календаря (id "startCal") в этой строке в моем компоненте поддержки. Есть ли способ сделать это? Мне было интересно узнать о ice: rowSelector, но я заметил, что могу получить только rowId выбранного, что означает, что мне придется пройти через «someBean.someList» в методе валидатора, чтобы найти значения для этой записи.

1 Ответ

1 голос
/ 27 августа 2010

Сначала свяжите первый вход с bean-компонентом:

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

с этим свойством:

private UIInput startCalComponent; // +getter+setter

Затем в вашем SomeBean#validateEndtime() методе выполните:

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