Атрибуты не становятся нулевыми при изменении события - PullRequest
0 голосов
/ 11 апреля 2019

На 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 сохраняет свое текущее значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...