Changes to params in grails only seen in controller not in views -


part of urlmappings looks this:

"/$lang"(controller: "main", action: "front") {         constraints {             lang inlist: ['hr', 'sl', 'si']         }     } 

because want set lang 'sl' if 'si', created following filter:

def filters = {     all(controller: '*', action: '*') {         before = {             if(params.lang == 'si') {                 params.lang = 'sl'             }         }     } } 

problem: params.lang inside controller gets wanted value ('sl'), in views, params.lang gets resolved original value ('si'). suggest solve problem?

thank you!

try use redirects. did way:

def filters = {         pages(controller: 'pages', action: 'home|services|projects|project_details|contact_us|career|about_us|downloadcasestudy') {             before = {                 if (params.lang) {                     if (!(params.lang in grailsapplication.config.i18nfields.locales)) {                         session."$sessionlocaleresolver.locale_session_attribute_name" = null                         params.remove('lang')                         response.senderror(404)                         return                     }                     if (params.lang == grailsapplication.config.defaultlocale) {                         rcu.getlocaleresolver(request).setlocale(request, response, new locale(params.lang))                         params.remove('lang')                         chain(controller: "pages", action: params.action, model:chainmodel?:[:],params: params)                         return false                     }                 } else {                     string langcode = rcu.getlocale(request).getlanguage()                     if (!(langcode in grailsapplication.config.i18nfields.locales)) {                         params.lang = grailsapplication.config.defaultlocale                         return                     } else if (langcode != grailsapplication.config.defaultlocale) {                         params.lang = langcode                         chain(controller: params.controller, action: params.action, model:chainmodel?:[:], params: params)                     }                     return true                 }             }             after = { map model ->              }             afterview = { exception e ->              }         } 

a little explanation: build urls /ru/about_us.
1.if lang not in list - 404.
2.if lang = grailsapplication.config.defaultlocale show instead of /en/about_us /about_us.
3. if no lang param provided - resolve request.


Comments