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 >