Hello Charly, Have you got any answer from Liferay jet? We could put this in an issue in the Liferay support system. Or post a message on the forum.
I tried something very ugly I implemented encodeRedirectURL as encodeURL is implemented. (copied the code) This prevents the nullpointer of showing up. But then I get this message: 13:08:40,375 WARN [PortletLocalServiceImpl:138] Portlet not found for 1 AjaxApplication Which probably is logical :) I'll try and dig some further. Thijs Charles CHAHBAZIAN wrote: > > > > > > > > > Hi Ate, > > Ate Douma a écrit : > Charly > wrote: > > Hello, > > I have the beginning of a solution ! > > > Cool ! > > > My code is based on Liferay's struts support > with some adaptations. > > > At this time, Guestbook portlet sample is ok, and I've made a > modification in wicket to get Navomatic and other bookmarkablePage > working. > > > The main point is that Liferay want a new HttpServletRequest (from > theirs object) in ServletContextProvider implementation of > ServletContextProvider and we must copy the request's parameters from > the original request to the new one. > > > Weird, but I guess it is something Liferay specific. > > > You're right. Because if I keep the same HttpServletRequest, I have a > ClassCastException later because Liferay use these specific objects... > > I translate also the "_wu" > (WicketPortlet.WICKET_URL_PORTLET_PARAMETER) parameter into differents > parameters > > > Why? > > The WicketPortlet dispatches to the servlet/filter using this url, so > the underlying web container (e.g. catalina) should already provide the > query string parameters as request parameters (as required by the > servlet spec). > > > > You can have a look to my 3 classes at the end of this mail. > > > I notice that you don't set the provided Map portletArg arguments on > the created PortletURLImpl in createResourceURL method. > > You probably should... > > > I tried that solution first. In that case, the url looks like that : > http://localhost:8080/user/joebloggs/3?p_p_id=NavomaticApplication_WAR_wicketexamples&p_p_action=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_NavomaticApplication_WAR_wicketexamples__wuview=%2Fnavomatic%2F%3Fwicket%3AbookmarkablePage%3D%253Aorg.apache.wicket.examples.navomatic.Page2 > > > But the WebRequestCodingStrategy (at line : 518) use the > request.getParameter() and on my debug sessions i saw that the > portletArgs i've put in the PortletURLImpl parameters are available in > the queryString but not in the parameters of the request ... (looks > strange for me too, it seems to be a liferay's bug) > > > > > I've got a problem for all bookmarkablePage, because the argument are > encoded by Wicket, and Liferay encode it second time. > > > Liferay shouldn't be doing that: you should get back the parameters > previously set on a PortletURL exactly the same. > > Seems like a Liferay bug to me. > > > About that question, as you can see in the sample url I've put, we have > > wicket%3AbookmarkablePage%3D%253Aorg.apache.wicket.examples.navomatic.Page2 > you can see that the there are 2 encoding : > 1) wicket set the parameter from > ":org.apache.wicket.examples.navomatic.Page2" to > "%3Aorg.apache.wicket.examples.navomatic.Page2" > 2) Liferay encode the "%" character to "%25" > > When Liferay get back the Encoded parameter, the "%25" is set into "%" > but no Wicket Code transform back the "%3A" to ":" > > Note : Wicket Encoding is done by : > org.apache.wicket.request.target.coding.WebRequestEncoder : line 86 > escapedValue = URLEncoder.encode(escapedValue, > application.getRequestCycleSettings().getResponseRequestEncoding()); > and I can't find a decode for this level in Wicket's code. > > > The parameter received is like > "%3Aorg.apache.wicket.examples.navomatic.Page2". So I add a call to > decode function from "org.apache.wicket.protocol.http.RequestUtils" > > > Here is my code modification (it's maybe possible to find a another > solution too) > > in the class > "org.apache.wicket.protocol.http.request.WebRequestCodingStrategy", > method addBookmarkablePageParameters(final Request request, final > RequestParameters parameters) > > (line : 521 / SVN revision : 585043) > > I change from > > final String[] components = Strings.split(requestString, > Component.PATH_SEPARATOR); > > > to > > final String[] components = > Strings.split(RequestUtils.decode(requestString),Component.PATH_SEPARATOR); > > > (Note: I test it with jetspeed and it works) > > > The main remaining problem is about Ajax portlet. I have this Error : > > > ======================================= > > 15:38:53,248 ERROR [[default]:731] "Servlet.service()" pour la servlet > default a lancé une exception > > java.lang.NullPointerException > > at > org.apache.wicket.protocol.http.WebResponse.redirect(WebResponse.java:204) > > at > org.apache.wicket.protocol.http.BufferedWebResponse.close(BufferedWebResponse.java:66) > > > Seems like a strange NPE to me. > > Looking at WebResponse.java:204, the only null reference in that code > line could be the url string itself, but as the stacktrace indicates, > the redirect is called from BufferedWebResponse.java:66 and there it > only does that *if* the url != null. > > Can you further debug this? > > > Your Right, the redirectURL is not null in BufferedWebResponse.java:66, > but is set to null by Liferay's code on : > com.liferay.portlet.PortletServletResponse > code is : > > public String encodeRedirectURL(String url) { > return null; > } > > I don't know why, but I have to see with Liferay's Team. (very strange > code) > > Ate > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > -- > Charles CHAHBAZIAN [EMAIL PROTECTED] > Directeur Recherche & Développement > 15 quai Tilsitt - 69002 LYON > tel. +33 478 38 54 18 - > fax +33 426 68 91 68 > > ............................................................................... > > >>> www.alinto.net - > The messaging reflex <<< > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > -- View this message in context: http://www.nabble.com/Portlet-howto-tf4587073.html#a13427052 Sent from the Wicket - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]