programing

JSF 페이지에서 요청 및 세션 매개 변수 및 속성 가져 오기

yoursource 2021. 1. 16. 10:52
반응형

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");를 사용할 수 있습니다.

참조 URL : https://stackoverflow.com/questions/550448/get-request-and-session-parameters-and-attributes-from-jsf-pages

반응형