(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-94f89814c4dfmaster
parent
1a574abe70
commit
e3d3b435ac
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue