2011-11-22 43 views
0

我在文本框中輸入值(URL),當我點擊下一個按鈕時,運行驗證是否輸入的url值是否有效。輸入值正在清除gsp

如果網址已經無效,那麼我顯示如下錯誤

if(valid == false){ 
this.errors.reject("Incorrect URL is entered for "+countries.get(countryCode)+" - please ensure to use a correct URL for More Games.") 
return []; 
       } 

一旦顯示的錯誤,它的清除輸入的數值,需要再次輸入值。如何限制清除值(我認爲頁面正在重新加載)或限制頁面再次加載。

這裏是命令 -

class DeliveryMoreGamesURLCommand implements Command { 
    private static final LOG = LogFactory.getLog(DeliveryController.class) 

    def wrapperService = ApplicationHolder.application.getMainContext().getBean("wrapperService"); 
    def customerService = ApplicationHolder.application.getMainContext().getBean("customerService"); 
    def countryService = ApplicationHolder.application.getMainContext().getBean("countryService"); 
    def helperService = ApplicationHolder.application.getMainContext().getBean("helperService"); 
    def ascService = ApplicationHolder.application.getMainContext().getBean("ascService"); 

    Hashtable<String, String> countries; 

    public LinkedHashMap<String, Object> preProcess(sessionObject, params, request) { 
     Delivery delivery = (Delivery) sessionObject; 

     def customer = Customer.get(delivery.customerId); 
     def contentProvider = ContentProvider.get(delivery.contentProviderId); 
     def deployment = Deployment.get(delivery.deploymentId); 
     def operatingSystem = OperatingSystem.get(delivery.operatingSystemId); 

     countries = wrapperService.getCountries(deployment, operatingSystem); 
     def sortedCountries = countries.sort { a, b -> a.value <=> b.value }; 

     def urls = ascService.getMoreGamesUrlsPerTemplates(deployment, operatingSystem); 

     def moreGamesUrls = new Hashtable<String,String>(); 
     countries.each { country -> 
      String countryCode = countryService.getTwoLetterCountryAbbreviation(country.key); 
      String url = customerService.getMoreGamesUrl(customer, contentProvider, countryCode); 
      if ("".equals(url)) { 
       url = urls.get(country.key); 
       if (url == null) { 
        url = ""; 
       } 
      } 
      moreGamesUrls.put(country.key, url); // We need to use the existing country code if the channels are deployed with three letter country codes 
     } 

     return [command: this, countries: sortedCountries, moreGamesUrls: moreGamesUrls] 
    } 

    public LinkedHashMap<String, Object> postProcess(sessionObject, params, request) { 
     Delivery delivery = (Delivery) sessionObject; 

     def urls = params.gamesUrls; 
     LOG.debug("urls from gsp :"+urls) 
     try{ 
     urls.eachWithIndex { u, i -> 
      String countryCode = u.key; 
      String url = urls["${u.key}"] 
      if(url != ""){ 
      Boolean valid = helperService.isURLValid(url) 
       if(valid == false){ 
        this.errors.reject("Incorrect URL is entered for "+countries.get(countryCode)+" - please ensure to use a correct URL for More Games.") 
        return []; 
       } 
      } 
     } 
     }catch (Exception ex) { 
        logger.warn("Incorrect URL is entered", ex) 
        return []; 
     } 

     def moreGamesUrls = new Hashtable<String, String>(); 
     urls.eachWithIndex { u, i -> 
      String countryCode = u.key; 
      String url = urls["${u.key}"] 
      moreGamesUrls.put(countryCode, url); 
     } 

     delivery.countries = countries; 
     delivery.moreGamesUrls = moreGamesUrls; 
     LOG.debug("moreGamesUrls after edit=${delivery.moreGamesUrls}"); 

     return null; 
    } 
} 

從命令預處理的數據將被渲染,然後點擊下一步按鈕後,在後處理將被調用,併爲URL驗證...

+0

對不起,問題不清楚。請提供更多代碼:下一個按鈕如何工作?視圖如何呈現?你是否將輸入的參數傳遞回來查看? – Chris

+0

用命令編輯了這個問題 – Techie

回答

0

解決了這個問題,通過實現更多的遊戲作爲一個全局變量(甚至在拋出錯誤後存儲了值)