Hi Guys,

We simplified it for struts to use a simple interceptor.  Can¹t show the
exact code due to legal crap, but here¹s the overview.

In our base action we have a String called requestString, with appropriate
getters and setters. We also have a Map<String, String> of unsafe URL¹s and
their safe counterparts. For example if the unsafe url was
deleteObject.action it¹s safe option would be listObject.action

The interceptor uses the following code:

        if(unsafeUrls.get(request.getRequestURI()) != null)
                responseUrl = unsafeUrls.get(request.getRequestURI());
        else
                responseUrl = request.getRequestURI();


        StringBuffer rStr = new StringBuffer(responseUrl);
        rStr.append(³?²);
        for (Iterator iter = request.getParameterMap().keySet().iterator();
iter.hasNext();) {
>         String key = (String) iter.next();
>         if (!"request_locale".equalsIgnoreCase(key)) {
>             if (request.getParameter(key) != null) { // you can also include
> your own parameter specific exceptions. With the tag we used to have a comma
> delimited list of excluded parameters.
>                 rStr.append(key);
>                 rStr.append("=");
>                 rStr.append((String) request.getParameter(key));
>                 rStr.append("&");
>             }
             }
        }

        action.setRequestString(sStr.toString());



        And then on the page we have:

        <div class=²localeFlag²><a
href="${requestString}&request_locale=${localeOpt.lang}" ><img
src="${pageContext.request.contextPath}/image/icons/${localeOpt.lang}_flag.g
if" alt="<s:text name="%{³select.²+ attr.localeOpt.lang}" />"
                 title="<s:text name="%{³select.²+ attr.localeOpt.lang}" />"
/></a></div>


I had to modify the code to satisfy our people but let me know if you have
any questions. We use a complex parameter filtering process to unsure that
security isn¹t compromised.

We¹ve had to do quite a bit of i18n which has involved implementing DB based
properties and tighter integration with S2 and spring.

Z.
> 
> 
> 
> 
> Hi Zoran,
> 
> would you mind sharing the code of this tag? It would be helpful to me,
> as somehow I've been able to link to the same sction with an empty url
> tag but unable to retain params. Thanks!
> 
> Em 24-03-2010 22:42, Zoran Avtarovski escreveu:
>> > I wrote a small custom tag which builds the link with the existing action
>> > and parameters. This way it just reloads the page. I also included a
>> > parameter that wouldn¹t allow the change (a jQuery dialog would give the
>> > user feed back) to take place if there might me an issue with system
>> > integrity ­ for example submitting a form twice.
>> >
>> > Z.
>>> >>
>>> >> hi,
>>> >> I have a quick and basic question.
>>> >> Regarding internationalization, whenever a user clicks on a link with a
>>> flag,
>>> >> i want to change the locale (language)
>>> >> of the web application.
>>> >> That works well with the i18n interceptor.
>>> >> However i always redirect the user to the home page (home.jsp) when i do
>>> that
>>> >> because that is how i have setup the input result :
>>> >>     <action name="changeLanguage" class="ServicesAction"
>>> >>       method="changeLocale">
>>> >>    <result name="input">/home/home.jsp</result>
>>> >>     </action>
>>> >>
>>> >> My JSP looks like this :
>>> >> <s:url id="url" action="changeLanguage.action">
>>> >>       <s:param name="request_locale">fr</s:param>
>>> >>      </s:url>
>>> >>      <s:a href="%{url}" theme="xhtml"><img
>>> >> src="<%=request.getContextPath()%>/images/flag_fr.png" /></s:a>
>>> >>
>>> >> So my question is :
>>> >> how do you specify the current page in the input result name ?
>>> >> so that the user stays on the current page when he changes languages.
>>> >> Thanks for helping.
>>> >>
>>> >>
>> >
>> >
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
> 

Reply via email to