【问题标题】:Getting a column value from ice:dataTable in the validator of another column在另一列的验证器中从 ice:dataTable 获取列值
【发布时间】:2011-04-04 10:08:43
【问题描述】:

我的 ice:dataTable 如下所示:-

<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") 上的验证器时,我想在我的支持 bean 中获取该行上的第一个日历 (id "startCal") 的值。有没有办法做到这一点?我想知道 ice:rowSelector 但我注意到我只能获取所选的 rowId,这意味着我必须遍历验证器方法中的“someBean.someList”才能找到该条目的值。

【问题讨论】:

标签: java jsf icefaces


【解决方案1】:

首先将第一个输入绑定到bean:

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

使用此属性:

private UIInput startCalComponent; // +getter+setter

然后,在您的 SomeBean#validateEndtime() 方法中执行:

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

【讨论】:

  • 真棒 BalusC。我在 getValue() 上得到了一个 classCastException,但我可以很容易地解决这个问题。非常感谢!
  • 不客气。我不做 IceFaces,所以我不知道 selectInputDate 的期望是什么。我只是简单地假设它是java.util.Date
  • 是的,这是我第二次尝试 iceFaces,所以我自己还是个新手。它有其优点和缺点。
  • 看起来它以 com.icesoft.faces.component.selectinputdate.SelectInputDate 的形式出现。所以我得想办法把它转换成 java.util.Date 。
  • 你不是把它和startCalComponent混淆了吗?您应该对getValue() 的结果更感兴趣。使用startCalComponent.getValue().getClass() 了解更多关于它的实际类型。
猜你喜欢
  • 2014-09-06
  • 2021-09-01
  • 2018-02-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
  • 1970-01-01
  • 2017-12-09
相关资源
最近更新 更多