[Oracle ADF] > Фильтрация в таблице по inputDate
UPD: VC должна быть создана декларативно а не создавться где-то произвольно в коде. Иначе потом некоторым программистам может быть сложно понять, почему VO выполняется именно так. В коде нужно получать это VC и уже в него подставлять данные.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<af:table
***
<af:column
****
<af:inputDate value="#{bindings.myBindings.DateCreation.value}"
id="id11" valueChangeListener="#{pageFlowScope.MyBean.onFilterByDateChanged}"
autoSubmit="true" placeholder="#{commonBundle['common.date']}">
<af:convertDateTime pattern="#{bindings.Tasks_List.hints.DateCreation.format}"/>
</af:inputDate>
</f:facet>
</af:column>
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
public void onFilterByDateChanged(ValueChangeEvent valueChangeEvent) {
ViewObject vo = VOUtils.getViewObjectByName(CONSTANTS_VO.MY_SUPER_VO);
if (valueChangeEvent.getNewValue() != null){
RichInputDate rid = (RichInputDate)valueChangeEvent.getComponent();
java.sql.Date inputDate = ADFDatesUtils.RichInputDateToJavaSQLDate(rid);
ViewCriteria vc = vo.createViewCriteria();
vc.setName(CONSTANTS_VC.MY__DATE__VC);
ViewCriteriaRow vcr1 = vc.createViewCriteriaRow();
vcr1.setAttribute("DateCreation","= " + inputDate);
vc.add(vcr1);
vo.applyViewCriteria(vc, true);
} else {
VOUtils.clearViewCriteriaByName(vo, CONSTANTS_VC.MY__DATE__VC);
}
vo.executeQuery();
}