На OragnizationChange - DepartmentNumber (LOV) и SubDepartmentNumber (LOV) должны измениться.
DepartmentNumber зависит от DepartmentId и OrganizationId
SubDepartmentNumber зависит от DepartmentId, Organizationid, SubDepartmentId
На Backend значения становятся нулевыми
но значения пользовательского интерфейса все еще существуют, хотя LOV не показывает остальные атрибуты
Groovy добавлено в DepartmentNumber:
if(OrganizationId!=null && DepartmentId!=null ){
return ProjCostingProjectVA?.first()?.getAttribute("DepartmentNumber");
}
Groovy добавлено в SubDepartmentNumber:
if(OrganizationId!=null && DepartmentId!=null && SubDepartmentId!=null){
return ProjCostingTaskVA?.first()?.getAttribute("SubDepartmentNumber");
}
Java-код добавлен в VORowImpl DepartmentNumber:
ViewObject taskVO = getProjCostingProjectVA().getViewObject();
taskVO.setNamedWhereClauseParam("bindInvOrgId", orgId);
taskVO.setNamedWhereClauseParam("bindProjectId", departmentId);
taskVO.executeQuery();
Row pjcTask=taskVO.first();
this.setAttributeInternal(PJCDEPARTMENTNUMBER,
(String)pjcTask.getAttribute("DepartmentNumber"));
}
Java-код добавлен в VORowImpl для SubDepartmentNumber:
ViewObject taskVO = getProjCostingTaskVA().getViewObject();
taskVO.setNamedWhereClauseParam("bindInvOrgId", orgId);
taskVO.setNamedWhereClauseParam("bindProjectId", departmentId);
taskVO.setNamedWhereClauseParam("bindTaskId", subdepartmentId);
taskVO.executeQuery();
Row pjcTask=taskVO.first();
this.setAttributeInternal(PJCSUBDEPARTMENTNUMBER,
(String)pjcTask.getAttribute("SubDepartmentNumber"));
}
До этого момента на UI все работало нормально, т.е. на странице jsff добавлен код для DepartmentNumber и SubDepartmentNumber:
autoSubmit="true"
partialTriggers="OrganizationCode"
OrganizationCode:
valueChangeListener="#{UpdateReleaseRuleBean.onOrganizationCodeChange}">
UpdateReleaseRuleBean.java
Подход 1:
this.setDepartmentNumber(null);
this.setSubDepartmentNumber(null);
Подход 2:
this.setELValue("#{bindings.DepartmentNumber.inputValue}", null);
private void setELValue(String el,String value){
FacesContext facesContext=FacesContext.getCurrentInstance();
ELContext elContext=facesContext.getELContext();
ExpressionFactory
expressionFactory=facesContext.getApplication().getExpressionFactory();
ValueExpression valueExp =
expressionFactory.createValueExpression(elContext,el,Object.class);
valueExp.setValue(elContext,value);
Ни один из подходов не работает.
Есть ли другой путь ?
Ожидаемые результаты:
При изменении OrganizationCode DepartmentNumber и SubDepartmentNumber должны получить пустое значение.
Текущее поведение:
При изменении кода организации значение DepartmentNumber и SubDepartmentNumber сохраняет свое текущее значение.