2014-12-02 161 views
1

我有三個依賴文本框。即部門,班級和子類別。當部門填寫inputText的類是啓用的,並且當preecho將子類啓用時。爲了使這個過程沒有困難。但是,我不能做出我刪除時的逆向過程,例如,部門的值應該禁用類並刪除它的值。 我無法做到這一點,因爲它是由事件,當它是空的不會觸發新的事件,因此不會進入我的其他人,如果。 所有文本框都具有自動建議行爲,該類取決於選定的部門和類的子類。 對於類和子類都有關聯的partialtriggers。輸入文本驗證何時爲空

我輸入文本部門代碼是(與valuechangelistener setdepartment()):

public void setDepartment(ValueChangeEvent valueChangeEvent) { 

     DCIteratorBinding dc2 = (DCIteratorBinding)evaluteEL("#{bindings.ScpClassView1Iterator}"); 
     ViewObject vo2 = dc2.getViewObject(); 
     vo2.applyViewCriteria(vo2.getViewCriteriaManager().getViewCriteria("ScpClassViewCriteria")); 
     if (it7.getValue() == null) { 
      vo2.ensureVariableManager().setVariableValue("P_Dept", null); 
     } else { 
      String deptIdDesc = valueChangeEvent.getNewValue().toString(); 
      int indexOfSeparator = deptIdDesc.indexOf("-"); 
      String deptId = deptIdDesc.substring(0, indexOfSeparator - 1); 
      vo2.ensureVariableManager().setVariableValue("P_Dept", deptId); 
     } 
     vo2.executeQuery(); 
     if (valueChangeEvent.getNewValue().toString().isEmpty()) { 
      getIt8().setDisabled(true); 
     } else { 
      getIt8().setDisabled(false); 
     } 
+0

爲我們提供了更好的解決方案的源代碼.. – Sarath 2014-12-02 10:41:13

回答

0

你嘗試在調試模式下運行代碼,並設置setDepartment方法中的斷點?它將確認是否在清除部門輸入數據時調用setDepartment方法。另外,看看你的代碼,我覺得它會在輸入爲空時拋出異常。 if (it7.getValue() == null)在您清除數據時將評估爲false,而是使用it7代替空白值。在這裏你需要使用if (valueChangeEvent.getNewValue().toString().isEmpty())

+0

Amishra,我使用這個if(it7.getValue()== null || it7.getValue()。equals(「」)|| it7.getValue()。toString()。isEmpty())和工作。非常感謝你。對我來說非常重要。 – 2014-12-02 18:44:19

+0

然後批准答案;) – 2014-12-03 07:57:25