输入的值正在gsp中清除

时间:2011-11-22 12:41:15

标签: grails groovy

我在文本框中输入值(URL),当我单击下一个按钮时,验证运行输入的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 [];
                }

显示错误后,清除输入的值并需要再次输入值。如何限制清除值(我认为页面再次加载)或限制页面再次加载。

这是命令 -

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 ...

1 个答案:

答案 0 :(得分:0)

通过将moreGamesUrls实现为全局变量(即使在抛出错误后也存储了值)解决了这个问题。