JSF 페이지에서 요청 및 세션 매개 변수 및 속성 가져 오기
Facelet과 함께 JSF를 사용하고 있으며 JSF 페이지 내에서 요청 및 세션 매개 변수를 가져와야합니다. JSP 페이지에서 다음과 같은 매개 변수를 얻었습니다. "${requestScope.paramName}"
또는 "${sessionScope.paramName}"
. 그러나 이제 JSF를 사용한 후에는 빈만 있고 빈 속성을 제외한 어떤 값도 얻을 수 없습니다.
참고 : 필요한 세션 속성은 acegi 보안을 사용하여 자동으로 채워 지므로 액세스 할 수 없습니다.
이제 어떻게해야합니까?
다음 표현식을 사용하여 요청 매개 변수 ID 를 가져올 수 있습니다 .
<h:outputText value="#{param['id']}" />
- param —이 요청에 대한 요청 매개 변수의 변경 불가능한 맵이며 매개 변수 이름으로 입력됩니다. 각 매개 변수 이름의 첫 번째 값만 포함됩니다.
- sessionScope- 속성 이름으로 키가 지정된이 요청에 대한 세션 속성의 맵입니다.
JSF 1.0 사양 의 섹션 5.3.1.2 는 변수 확인자가 해결해야하는 객체를 정의합니다.
Bean을 사용하고 (요청 범위가 제 안됨) FacesContext를 통해 컨텍스트에 직접 액세스 할 수도 있습니다.
다음 코드를 사용하여 HttpServletRequest 및 HttpServletResposne 개체를 가져올 수 있습니다.
HttpServletRequest req = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpServletResponse res = (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
그런 다음 개체를 통해 개별 매개 변수에 getParameter(paramName)
액세스하거나 getParameterMap()
req
개체 를 통해 전체지도에 액세스 할 수 있습니다.
요청 범위 빈을 제안하는 이유는 초기화 중에이를 사용할 수 있고 (최악의 경우 시나리오는 생성자입니다. 대부분의 프레임 워크는 빈 초기화시 코드를 수행 할 수있는 공간을 제공합니다) 요청이 들어 오면 완료되기 때문입니다.
그러나 그것은 약간의 해킹입니다. ;) 필요한 변수에 액세스 할 수있는 JSF Acegi 모듈이 있는지 살펴볼 수 있습니다.
사용할 수 있습니다
<h:outputText value="#{param['id']}" />
또는
<h:outputText value="#{request.getParameter('id')}" />
그러나 매개 변수를 백킹 빈에 전달하려면 사용하는 f:viewParam
것이 아마도 원하는 것입니다. "보기 매개 변수는 쿼리 문자열 매개 변수와 모델 값 간의 매핑입니다."
<f:viewParam name="id" value="#{blog.entryId}"/>
이것은 GET 매개 변수의 id 매개 변수를 블로그 빈의 entryId
필드로 설정합니다. 자세한 내용은 http://java.dzone.com/articles/bookmarkability-jsf-2 를 참조 하십시오.
다음과 같이 할 수 있습니다.
#{requestScope["paramName"]} ,#{sessionScope["paramName"]}
때문에 requestScope
또는 sessionScope
지도 객체입니다.
OcpSoft의 PrettyFaces 와 같은 도구를 사용하여 동적 매개 변수 값을 JSF Bean에 직접 삽입 할 수도 있습니다 .
FacesContext
관리 빈에서 현재 인스턴스의 세션 맵에 이미 객체를 속성으로 넣었다고 가정하면 다음과 같이 JSF 페이지에서 가져올 수 있습니다.
<h:outputText value="#{sessionScope['yourObject'] }" />
개체에 속성이있는 경우 다음을 통해 가져옵니다.
<h:ouputText value="#{sessionScope['yourObject'].anyProperty }" />
JSF 페이지에서 요청 / 세션 범위 변수에 액세스 할 수 없습니까?
이것은 Spring Security를 사용하여 로그인 페이지에서 수행하는 작업입니다.
<h:outputText
rendered="#{param.loginFailed == 1 and SPRING_SECURITY_LAST_EXCEPTION != null}">
<span class="msg-error">#{SPRING_SECURITY_LAST_EXCEPTION.message}</span>
</h:outputText>
Bean에서 session.getAttribute ( "attributeName");를 사용할 수 있습니다.
'programing' 카테고리의 다른 글
왜 new String (“”)은 컴파일되지만 char c = ''는 컴파일되지 않습니까? (0) | 2021.01.16 |
---|---|
httpd 서버가 시작되지 않음 : (13) 권한이 거부 됨 : make_sock : 주소 [::] : 88에 바인딩 할 수 없습니다. (0) | 2021.01.16 |
ES2015 / ES6의 스프레드 구문 vs 나머지 매개 변수 (0) | 2021.01.16 |
현재 디렉토리를 얻는 방법? (0) | 2021.01.16 |
mongodb ID에서 타임 스탬프 가져 오기 (0) | 2021.01.16 |