2012-08-01 3 views
0

한 JSF 페이지에서 다른 JSF 페이지로 많은 매개 변수를 전달하려고합니다. 내가 매개 변수의 많은 수의 동일한 작업을 수행하는 경우 그렇지 않은한 페이지에서 다른 페이지로 많은 수의 매개 변수를 전달하는 JSF

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

:이 같은 매개 변수를 포함하는 URL을 가진 청취자 방법에 ExternalContext 번호 리디렉션()를 사용하여 매개 변수의 낮은 번호는

작업. 내 이해, 브라우저 URL의 크기에 제한이 있습니다. URL이 약 tahn 인 경우 2000 characerts 작동하지 않습니다.

나는

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

답변

0

더 많은 페이지에 걸쳐 많은 수의 매개 변수를 보내려면 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

관련 문제