Wicket で URL 取得
なんかパーマリンクを csv に出したりするのに
URL を作成したりする時があるんだけど、
自前でこんなの書いてた
PageParameters parameters = new PageParameters(); parameters.add("id", id); HttpServletRequest request = ((ServletWebRequest)component.getRequest()).getHttpServletRequest(); String scheme = request.getScheme(); String serverName = request.getServerName(); int port = request.getServerPort(); String contextPath = request.getContextPath(); String servletPath = request.getServletPath(); StringBuilder url = new StringBuilder(scheme); url.append("://"); url.append(serverName); if(port != 80){ url.append(":"); url.append(port); } url.append(contextPath); url.append(servletPath); url.append(component.urlFor(ExamplePage.class,parameters)); return url.toString();
泥臭くがんばってたんだけど、
今日、こんなの発見しましたって教えてもらった。
org.apache.wicket.protocol.http.RequestUtils#toAbsolutePath(final String relativePagePath)
PageParameters parameters = new PageParameters(); parameters.add("id", id); return RequestUtils.toAbsolutePath(component.urlFor(ExamplePage.class,parameters).toString());
これだけで済んだ><
中みたら
if (requestPath.endsWith("/")) { result = new StringBuffer(requestPath); } else { // Remove everything after last slash (but not slash itself) result = new StringBuffer(requestPath.substring(0, requestPath.lastIndexOf('/') + 1)); }
って組立ててたwwww