1
22
23 package com.liferay.portal.struts;
24
25 import com.liferay.portal.kernel.util.StringPool;
26 import com.liferay.portal.model.Portlet;
27 import com.liferay.portlet.PortletResponseImpl;
28 import com.liferay.portlet.PortletURLImplWrapper;
29
30 import java.util.Map;
31
32
37 public class StrutsActionPortletURL extends PortletURLImplWrapper {
38
39 public StrutsActionPortletURL(
40 PortletResponseImpl portletResponseImpl, long plid, String lifecycle) {
41
42 super(portletResponseImpl, plid, lifecycle);
43
44 _portlet = portletResponseImpl.getPortlet();
45 _strutsPath =
46 StringPool.SLASH + _portlet.getStrutsPath() + StringPool.SLASH;
47 }
48
49 public void setParameter(String name, String value) {
50 if (name.equals("struts_action")) {
51 if (!value.startsWith(_strutsPath)) {
52 int pos = value.lastIndexOf(StringPool.SLASH);
53
54 value = _strutsPath + value.substring(pos + 1, value.length());
55 }
56 }
57
58 super.setParameter(name, value);
59 }
60
61 public void setParameters(Map<String, String[]> params) {
62 for (Map.Entry<String, String[]> entry : params.entrySet()) {
63 String name = entry.getKey();
64 String[] values = entry.getValue();
65
66 if (name.equals("struts_action")) {
67 for (int i = 0; i < values.length; i++) {
68 String value = values[i];
69
70 if (!value.startsWith(_strutsPath)) {
71 int pos = value.lastIndexOf(StringPool.SLASH);
72
73 value =
74 _strutsPath +
75 value.substring(pos + 1, value.length());
76
77 values[i] = value;
78 }
79 }
80 }
81 }
82
83 super.setParameters(params);
84 }
85
86 private Portlet _portlet;
87 private String _strutsPath;
88
89 }