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: [email protected]
> For additional commands, e-mail: [email protected]
>