2012-08-01 76 views
0

我想將大量參數從一個JSF頁面傳遞到另一個頁面。JSF將大量參數從一個頁面傳遞到其他頁面

對於較低數目的參數我在監聽方法使用的ExternalContext#重定向()與含有這樣的參數的URL:

FacesContext.getCurrentInstance().getExternalContext().redirect("/faces/someDir/index.jsf?p1=a&p2=b"); 

如果我做同樣的大量參數它不工作。我的理解是,瀏覽器對URL的大小有限制。如果URL有更多的tahn約。 2000 charosrts它不起作用。

我試着像

FacesContext.getCurrentInstance().getExternalContext().dispatch("/faces/someDir/index.jsf?p1=a&p2=b"); 

向前但隨後的目標頁面工程對源頁的數據。原因可能是我的軟件archticture,我不能在這裏詳細解釋...

我的問題:有沒有人有類似的問題和解決方案呢?

+0

我想這是你需要的答案:http://serverfault.com/questions/56691/whats-the-maximum-url-length-in-tomcat – Luxspes 2012-08-01 08:11:48

回答

0

如果您想要發送大量參數以跨越多個頁面,那麼最好將它們封裝到會話作用域bean中,而不是將它們作爲GET參數發送。

例如:

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
@ManagedBean 
@SessionScoped 
public class SESSION_Bean_Class { 

    // Declare members 
    // all parameters 
    private int p1; 
    private int p2; 
    private String p3; 
    private String p4; 

    // Getter(s) and Setter(s) 
    public int getP1() { 
     return p1; 
    } 
    public void setP1(int p1) { 
     this.p1 = p1; 
    } 
    public int getP2() { 
     return p2; 
    } 
    public void setP2(int p2) { 
     this.p2 = p2; 
    } 
    public String getP3() { 
     return p3; 
    } 
    public void setP3(String p3) { 
     this.p3 = p3; 
    } 
    public String getP4() { 
     return p4; 
    } 
    public void setP4(String p4) { 
     this.p4 = p4; 
    } 
} 

然後你就可以在任何頁面方便地訪問他們像如下:

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 
</h:head> 
<h:body> 
    Value parameter 1 is That #{sESSION_Bean_Class.p1} 
    <br /> 
    Value parameter 2 is That #{sESSION_Bean_Class.p2} 
    <br /> 
    Value parameter 3 is That #{sESSION_Bean_Class.p3} 
    <br /> 
    Value parameter 4 is That #{sESSION_Bean_Class.p4} 
    <br /> 
</h:body> 
</html> 
+1

非常感謝 - 這是一種解決問題的方法。我沒有考慮將數據放入會話中,因爲如果可能的話,我會避免使用會話變量。但在這種情況下,似乎是必要的。感謝名單 – HelmutH 2012-08-01 10:40:35