Prime Face で JSF2 を使用しています。すべてのページでユーザーがクリックした以前のリンクまたは URL をすべて表示したいのですが、どうすればよいですか?
質問する
376 次
2 に答える
0
ここにあなたのための良いリンクがあります: Java フィルターからリクエスト URL を取得するにはどうすればよいですか?
私なら、その例のようなものを使用して、3 つの URL のセットを作成します。
//Using linked example
public class MyFilter implements Filter {
public void init(FilterConfig config) throws ServletException { }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
chain.doFilter(request, response);
String url = ((HttpServletRequest) request).getPathTranslated();
UrlBean urlBean = (UrlBean) FacesContext.getCurrentInstance()getApplication().getValueBinding("#{urlBean}");
urlBean.storeUrl(url);
}
public void destroy() { }
}
これは完全にテストされていませんが、アイデアはうまくいくはずです。コンポーネントに必要なものを格納するために、いくつかのロジック (おそらくスタック) を実装する必要があります。(明らかに、同じ URL に複数回アクセスする可能性があります)。UrlBean は単なる抽象的なアイデアであり、実装する必要があることに注意してください。
于 2012-10-06T19:53:51.953 に答える
-1
こんにちは、ユーザーが参照する URL を配置するために、このシングルトン クラスを作成しました。
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class UrlHistory {
@SuppressWarnings("rawtypes")
private static Map<String, List> store = new HashMap<String, List>();
private static UrlHistoryBean instance = null;
public static UrlHistoryBean getInstance() {
if (instance == null) {
instance = new UrlHistoryBean();
}
return instance;
}
LinkedList<UrlData> urlList = new LinkedList<UrlHistoryBean.UrlData>();
public void addUrl(String sessionId, String urlString, int urlId) {
UrlData data = new UrlData();
data.setUrlName(urlString);
data.setUrlId(companyId);
if (urlList.isEmpty()) {
urlList.add(data);
} else {
boolean isEqual = false;
for (UrlData urlDataObj : urlList) {
if (urlDataObj.equals(data))
isEqual = true;
}
if(!isEqual)
urlList.addFirst(data);
}
store.put(sessionId, urlList);
}
@SuppressWarnings("rawtypes")
public static Map<String, List> getStore() {
return store;
}
@SuppressWarnings("rawtypes")
public static void setStore(Map<String, List> store) {
UrlHistoryBean.store = store;
}
public class UrlData {
String urlName;
int urlId;
public String getUrlName() {
return UrlName;
}
public void setUrlName(String UrlName) {
this.UrlName = UrlName;
}
public int getUrlId() {
return urlId;
}
public void setUrlId(int urlId) {
this.urlId = urlId;
}
public boolean equals(UrlData rData) {
boolean bEqual = false;
if (this.getUrlId() > 0 && rData.getUrlId() > 0 && this.getUrlId() == rData.getUrlId()) {
bEqual = true;
}
return bEqual;
}
}
}
于 2012-10-13T05:21:53.313 に答える