2014-03-27 65 views
0

我目前正在与Jettys rewrite mechanisms挣扎。基本上我想要的网址
http://localhost:8080/membership/payment?id=5000http://localhost:8080/#/membership/payment?id=5000Jetty URL重写/重定向试纸条查询字符串

我目前的做法所取代是这样的:?

RewriteHandler rewrite = new RewriteHandler(); 
rewrite.setRewriteRequestURI(true); 
rewrite.setRewritePathInfo(true); 
rewrite.setOriginalPathAttribute("requestedPath"); 

RewriteRegexRule replace = new RewriteRegexRule(); 
replace.setRegex("/membership/(.*)"); 
replace.setReplacement("/#/membership/$1"); 
rewrite.addRule(replace); 

一般来说,这是工作,唯一缺少的是查询字符串(ID = 5000 )被传递到新的位置。

我怎样才能保持查询字符串甚至新位置?

回答

1

好吧,我发现了一个解决方案,即:

private static ContextHandlerCollection prepareContexts() { 

    MovedContextHandler handler = new MovedContextHandler(); 
    handler.setContextPath("/membership"); 
    handler.setNewContextURL("/#/membership"); 
    handler.setPermanent(true); 
    handler.setDiscardPathInfo(false); 
    handler.setDiscardQuery(false); 

    WebAppContext webAppContext = new WebAppContext(); 
    webAppContext.setServer(server); 
    webAppContext.setContextPath("/"); 
    webAppContext.setWar("src/main/webapp"); 

    ContextHandlerCollection contexts = new ContextHandlerCollection(); 
    contexts.setHandlers(new Handler[] { handler, webAppContext }); 

    return contexts; 
} 

而且事后上下文必须分配:

server.setHandler(prepareContexts();