界面存在多個easyUI Combobox控件時,加載數據失敗,或加載不正確


問題原因:當一個界面上有多個easyui ComboBox控件,且在界面加載時同時請求數據。由於數據是異步加載,會導致下拉數據源加載失敗,或加載不正確(串數據)。

方案一:不用在一開始設定url(data加載路徑),在點擊控價下拉按鈕時再加載數據源。

 

<td>處理類型:</td>
 <td><input id="handleType" name="handleType" panelHeight="auto" class="easyui-combobox"
        style="width: 110px;"
        data-options="editable : false,
        onShowPanel : function(){
           var s=$(this).combobox('getData');
           if(s.length==0){
              $(this).combobox('options').url=projectPath+'TDataDictController/loadAccountErrHandleType.do';
              $(this).combobox('reload');
           }
        },
        valueField:'itemVal',
        textField:'colNameCn'">
</td>

 

方案二:在Controller的方法中,指明形參中包含HttpServletResponse參數,並在當前環境的response中返回查詢結果

@RequestMapping("loadDataDict.do")
    @ResponseBody
    public void loadAccountErrHandleType(TYwDataDictVo vo, HttpServletRequest request,HttpServletResponse response) {
        try {
            this.writeJson(tDataDictService.loadDataDict(vo,request),response);
        } catch (Exception e) {
            log.error("數據字典查詢失敗,{}", e);
        }
    }
/**
     * 將對象轉換為json格式並輸出
     * @param obj
     */
    public void writeJson(Object obj,HttpServletResponse response){
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
        response.setContentType("text/html; charset=utf-8");
        PrintWriter out = null;
        try{
            out = response.getWriter();
            out.println(JSON.toJSONStringWithDateFormat(obj, "yyyy-MM-dd"));
        }catch(IOException e){
            log.error("IO異常,{}",e);
        } finally{
            out.flush();
            out.close();
        }

    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM