1
19
20 package com.liferay.portal.apache.bridges.struts;
21
22 import com.liferay.portal.kernel.log.Log;
23 import com.liferay.portal.kernel.log.LogFactoryUtil;
24 import com.liferay.portal.kernel.util.HttpUtil;
25 import com.liferay.portlet.PortletResponseImpl;
26 import com.liferay.portlet.PortletURLImplWrapper;
27
28 import org.apache.portals.bridges.struts.StrutsPortletURL;
29
30
36 public class LiferayStrutsPortletURLImpl extends PortletURLImplWrapper {
37
38 public LiferayStrutsPortletURLImpl(
39 PortletResponseImpl portletResponseImpl, long plid, String lifecycle) {
40
41 super(portletResponseImpl, plid, lifecycle);
42 }
43
44 public void setParameter(String name, String value) {
45 super.setParameter(name, value);
46
47
50 String decodedValue = HttpUtil.decodeURL(value);
51
52 try {
53 if (name.equals(StrutsPortletURL.PAGE)) {
54 String[] urlComponents = decodedValue.split("\\?", 2);
55
56 if (urlComponents.length != 2) {
57 return;
58 }
59
60 String[] nameValue = urlComponents[1].split("\\&");
61
62 for (int i = 0; i < nameValue.length; i++) {
63 String[] nameValuePair = nameValue[i].split("\\=", 2);
64
65 if (nameValuePair.length == 2) {
66 super.setParameter(nameValuePair[0], nameValuePair[1]);
67 }
68 else if (nameValuePair.length == 1) {
69 super.setParameter(nameValuePair[0], "true");
70 }
71 }
72 }
73 }
74 catch (Throwable t) {
75 _log.error("Could not parse Struts page query string " + value, t);
76 }
77 }
78
79 private static Log _log =
80 LogFactoryUtil.getLog(LiferayStrutsPortletURLImpl.class);
81
82 }