형식 url 성 url rewirte. xml 설정 path
/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.wiki.core.ui;
import org.jboss.seam.Component;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.ScopeType;
import org.jboss.seam.wiki.util.WikiUtil;
import org.jboss.seam.wiki.core.action.prefs.WikiPreferences;
import org.jboss.seam.wiki.core.model.WikiNode;
import org.jboss.seam.wiki.core.model.User;
import org.jboss.seam.wiki.core.model.Feed;
import org.jboss.seam.wiki.core.ui.FeedServlet;
import java.io.Serializable;
/**
* Renders outgoing URLs in a unified fashion, see urlrewrite.xml for incoming URL GET request rewriting.
* <p>
* Note that some of the rendering is delegated into the domain model for subclasses of <tt>WikiNode</tt>.
* </p>
*
* @author Christian Bauer
*/
@Name("wikiURLRenderer")
@Scope(ScopeType.CONVERSATION)
@AutoCreate
public class WikiURLRenderer implements Serializable {
@In
String contextPath;
@In("#{preferences.get('Wiki')}")
WikiPreferences prefs;
public String renderSearchURL(String search) {
return renderSearchURL(search, false);
}
public String renderSearchURL(String search, boolean usePrefsPath) {
if (search == null || search.length() == 0) return "";
StringBuilder url = new StringBuilder();
String skin = Component.getInstance("skin") != null ? (String)Component.getInstance("skin") : "d";
url.append(usePrefsPath ? prefs.getBaseUrl() : contextPath);
url.append("/search_").append(skin).append(".seam?query=").append(encodeURL(search));
return url.toString();
}
public String renderTagURL(String tag) {
return renderTagURL(tag, false);
}
public String renderTagURL(String tag, boolean usePrefsPath) {
if (tag == null || tag.length() == 0) return "";
StringBuilder url = new StringBuilder();
url.append(usePrefsPath ? prefs.getBaseUrl() : contextPath);
url.append("/tag/").append(encodeURL(tag));
return url.toString();
}
public String renderUserProfileURL(User user) {
return renderUserProfileURL(user, false);
}
public String renderUserProfileURL(User user, boolean usePrefsPath) {
if (user == null || user.getUsername() == null) return "";
StringBuilder url = new StringBuilder();
url.append(usePrefsPath ? prefs.getBaseUrl() : contextPath);
url.append("/user/").append(user.getUsername());
return url.toString();
}
public String renderUserPortraitURL(User user, boolean small) {
return renderUserPortraitURL(user, small, false);
}
public String renderUserPortraitURL(User user, boolean small, boolean usePrefsPath) {
if (user == null || user.getId() == null) return "";
StringBuilder url = new StringBuilder();
if (usePrefsPath) url.append(prefs.getBaseUrl());
url.append("/seam/resource/wikiUserPortrait/").append(user.getId()).append("/").append(small ? "s" : "l");
return url.toString();
}
public String renderAggregateFeedURL(String aggregateId) {
return renderAggregateFeedURL(aggregateId, false);
}
public String renderAggregateFeedURL(String aggregateId, boolean usePrefsPath) {
if (aggregateId == null) return "";
StringBuilder url = new StringBuilder();
url.append(usePrefsPath ? prefs.getBaseUrl() : contextPath);
url.append("/service/Feed/atom/Aggregate/").append(aggregateId);
return url.toString();
}
public String renderFeedURL(Feed feed) {
return renderFeedURL(feed, null, null, false);
}
public String renderFeedURL(Feed feed, String tag, String comments) {
return renderFeedURL(feed, tag, comments, false);
}
public String renderFeedURL(Feed feed, String tag, String comments, boolean usePrefsPath) {
if (feed == null || feed.getId() == null) return "";
StringBuilder url = new StringBuilder();
url.append(usePrefsPath ? prefs.getBaseUrl() : contextPath);
url.append("/service/Feed/atom").append(feed.getURL());
if (comments != null && comments.length() >0) {
url.append("/Comments/").append(FeedServlet.Comments.valueOf(comments));
}
if (tag != null && tag.length() >0) {
url.append("/Tag/").append(encodeURL(tag));
}
return url.toString();
}
public String renderURL(WikiNode node) {
return renderURL(node, false);
}
public String renderURL(WikiNode node, boolean usePrefsPath) {
if (node == null || node.getId() == null) return "";
return prefs.isRenderPermlinks() ? renderPermURL(node, usePrefsPath) : renderWikiURL(node, usePrefsPath);
}
public String renderPermURL(WikiNode node) {
return renderPermURL(node, false);
}
public String renderPermURL(WikiNode node, boolean usePrefsPath) {
if (node == null || node.getId() == null) return "";
return (usePrefsPath ? prefs.getBaseUrl() : contextPath) + "/" + node.getPermURL(prefs.getPermlinkSuffix());
}
public String renderWikiURL(WikiNode node) {
return renderWikiURL(node, false);
}
public String renderWikiURL(WikiNode node, boolean usePrefsPath) {
if (node == null || node.getId() == null) return "";
return (usePrefsPath ? prefs.getBaseUrl() : contextPath) + "/" + node.getWikiURL();
}
// TODO: We need more methods here, rendering year/month/day/tag/etc. on WikiURL (not perm url)
private String encodeURL(String s) {
return WikiUtil.encodeURL(s);
}
public static WikiURLRenderer instance() {
return (WikiURLRenderer) Component.getInstance(WikiURLRenderer.class);
}
}
note: 이 코드 는 구조 적 인 예 로 모든 encode 를 url rewirte 로 할 path 를 집중 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
XML이란 무엇입니까?이것은 저장, 검색 및 공유할 수 있는 형식으로 데이터를 저장하는 강력한 방법입니다. 가장 중요한 것은 XML의 기본 형식이 표준화되어 있기 때문에 시스템이나 플랫폼 간에 로컬 또는 인터넷을 통해 XML을 공유하거나...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.