Wicket:从浏览器获取URL

时间:2010-10-08 00:16:27

标签: java wicket

我需要使用Wicket从Firefox中打开的当前网页检索URL。有人可以告诉我该怎么做吗?

5 个答案:

答案 0 :(得分:6)

您需要查询基础HTTPServletRequest

public class DummyPage extends WebPage{

    private String getRequestUrl(){
        // this is a wicket-specific request interface
        final Request request = getRequest();
        if(request instanceof WebRequest){
            final WebRequest wr = (WebRequest) request;
            // but this is the real thing
            final HttpServletRequest hsr = wr.getHttpServletRequest();
            String reqUrl = hsr.getRequestURL().toString();
            final String queryString = hsr.getQueryString();
            if(queryString != null){
                reqUrl += "?" + queryString;
            }
            return reqUrl;
        }
        return null;

    }

}

<强>参考:

答案 1 :(得分:5)

Sean Patrick Floyd的解决方案似乎已经过时了wicket 1.5

如果使用wicket 1.5(或以上我猜)这里是解决方案:

RequestCycle.get().getUrlRenderer().renderFullUrl(
    Url.parse(urlFor(MyPage.class,null).toString()));

<强>参考

Getting a url for display

答案 2 :(得分:5)

要获取当前页面的网址,请使用webrequest和UrlRenderer:

Url url = ((WebRequest)RequestCycle.get().getRequest()).getUrl();
String fullUrl = RequestCycle.get().getUrlRenderer().renderFullUrl(url);

答案 3 :(得分:1)

根据您的确切需要,这可能无法实现。有一个简短的指南here in the Wicket wiki,但它有一些警告,特别是它只返回1.3之后的Wicket版本中的相对URL。也就是说,使用的方法是

String url = urlFor("pageMapName", MyPage.class, new PageParameters("foo=bar"));

如果您使用维基的替代方法 - 涉及表单的方法 - 请注意:getPage()not part of Wicket's public API

答案 4 :(得分:1)

这很有效。我正在使用wicket 1.5;

新网址(RequestCycle.get()。getUrlRenderer()。renderFullUrl(                               Url.parse(urlFor(HomePage.class,NULL)的ToString())))的 getAuthority();

示例:http://example.com:80/a_long_path/

getAuthproty()将返回example.com:80

getHost()将返回example.com。