在OAF中,如果使用标准的resetButton去重置组件,对于LOV组件不起作用,所以一般情况下需要手动重置组件,下面是一个重置组件的方法代码
public static void resetWebBean(OAPageContext pageContext, OAWebBean webBean, String[] strWebBeanNames){ if (strWebBeanNames != null){ OAWebBean itemWebBean = null; for (int i = 0; i < strWebBeanNames.length; i++){ //Search for Bean itemWebBean = webBean.findChildRecursive(strWebBeanNames[i]); if (itemWebBean != null){ //OAMessageTextInputBean if (itemWebBean instanceof OAMessageTextInputBean){ ((OAMessageTextInputBean)itemWebBean).setValue(pageContext, null); } //OAMessageLovInputBean else if (itemWebBean instanceof OAMessageLovInputBean){ ((OAMessageLovInputBean)itemWebBean).setValue(pageContext, null); } //OAMessageChoiceBean else if (itemWebBean instanceof OAMessageChoiceBean){ ((OAMessageChoiceBean)itemWebBean).setValue(pageContext, null); } //OAMessageDateFieldBean else if (itemWebBean instanceof OAMessageDateFieldBean){ ((OAMessageDateFieldBean)itemWebBean).setValue(pageContext, null); } //OAFormValueBean else if (itemWebBean instanceof OAFormValueBean){ ((OAFormValueBean)itemWebBean).setValue(pageContext, null); } //OAMessageCheckBoxBean else if (itemWebBean instanceof OAMessageCheckBoxBean){ ((OAMessageCheckBoxBean)itemWebBean).setValue(pageContext, null); } else{ throw new OAException("Not Found the webBean"); } } } } }
对于上面的方法,需要把对应的组件ID放到一个数组中,然后把该数组作为参数传递进来,如下:
if (pageContext.getParameter("Cancel") != null) { String[] webBeanNames = { "SearchProjectName", "SearchMachineModel", "SearchArea", "SearchWind", "SearchIncidentSeverity", "SearchIncidentType", "SearchIncidentStatus", "SearchProblem", "SearchSerialNumber", "SearchCustomer", "SearchExpectedResolutionDate", "SearchProjectManager", "SearchProjectId", "SearchProblemCode", "SearchPartyId"}; WebBeanUtil.resetWebBean(pageContext,webBean,webBeanNames); }