(Hoffentlich) der letzte Teil, der angepasst werden muss, damit die parametrisierten RelatedLinks funktionieren. Hier wird jetzt ebenfalls geprüft, ob außer der OID

noch weitere Parameter an die URL angehängt wurden. Diese werden dann auch an die erzeugte URL angehängt.

Mögliche Erweiterung: "Gefährliche" Parameter, z.B. output=xml, ausfiltern.


git-svn-id: https://svn.libreccm.org/ccm/trunk@635 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2010-11-25 08:40:00 +00:00
parent 1a574abe70
commit e3d3b435ac
1 changed files with 30 additions and 12 deletions

View File

@ -30,19 +30,18 @@ import com.arsdigita.kernel.URLFinderNotFoundException;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import com.arsdigita.toolbox.ui.OIDParameter; import com.arsdigita.toolbox.ui.OIDParameter;
import java.util.Map;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
public class OIDRedirectServlet extends BaseServlet { public class OIDRedirectServlet extends BaseServlet {
private static final Logger s_log = private static final Logger s_log =
Logger.getLogger(OIDRedirectServlet.class); Logger.getLogger(OIDRedirectServlet.class);
public static final String OID_PARAM = "oid"; public static final String OID_PARAM = "oid";
private static final OIDParameter param = new OIDParameter(OID_PARAM); private static final OIDParameter param = new OIDParameter(OID_PARAM);
@Override
protected void doService(HttpServletRequest sreq, protected void doService(HttpServletRequest sreq,
HttpServletResponse sresp) HttpServletResponse sresp)
throws ServletException, IOException { throws ServletException, IOException {
@ -83,6 +82,25 @@ public class OIDRedirectServlet extends BaseServlet {
String context = sreq.getParameter("context"); String context = sreq.getParameter("context");
String url = URLService.locate(oid, context); String url = URLService.locate(oid, context);
Map<?, ?> parameters = sreq.getParameterMap();
StringBuilder urlParams = new StringBuilder();
for (Map.Entry<?, ?> entry : parameters.entrySet()) {
if (!entry.getKey().equals("oid")) {
if (urlParams.length() == 0) {
urlParams.append('?');
} else {
urlParams.append('&');
}
String key = (String) entry.getKey();
String[] value = (String[]) entry.getValue();
if (value.length > 0) {
urlParams.append(String.format("%s=%s", key, value[0]));
}
}
}
url = url.concat(urlParams.toString());
if (s_log.isDebugEnabled()) { if (s_log.isDebugEnabled()) {
s_log.debug("Redirecting oid " + oid + " to " + url); s_log.debug("Redirecting oid " + oid + " to " + url);
} }