2013-02-12 3 views
0

내 .xhtml 페이지에 숨겨진 필드가 몇 개 있습니다.facelet에서 숨겨진 값을 얻으려면 어떻게해야합니까?

<h:inputHidden value="1" id="hidePrev"/> 
..... 
<h:inputHidden value="1" id="hideNext"/> 

그리고 JSF 빈에서 값을 가져올 수 없습니다.

public class FacesUtil { 
public static Object getMapValue(String key) { 
    return FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get(key); 
} 

public static void setMapValue(String key, Object value) { 
    FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put(key, value); 
} 

} 

내 콩 코드 :

nextFlag = (String)FacesUtil.getMapValue("hideNext"); 
    prevFlag = (String)FacesUtil.getMapValue("hidePrev"); 

필드 nextFlagprevFlag은 여전히 ​​비어 있습니다. 그들에는 getter와 setter 메소드가 있습니다. JSF 2.2 버전을 사용하고 있습니다. 이 문제를 해결하도록 도와주세요.

답변

1

<h:inputHidden>은 양식 제출에 사용자 정의 요청 매개 변수를 추가 할 의도가 없습니다. 포스트 백 (postback)을 통해 이미 정의 된 bean 속성을 기억할 의도가 있습니다. 사용자 지정 요청 매개 변수를 추가하려면 명령 구성 요소에 <f:param> 또는 "일반 바닐라"<input type="hidden">을 사용해야합니다. 따라서

, 그래서

<h:commandButton ...> 
    <f:param name="prev" value="1" /> 
    <f:param name="next" value="1" /> 
</h:commandButton> 

정도

<input type="hidden" name="prev" value="1" /> 
<input type="hidden" name="next" value="1" /> 
<h:commandButton ... /> 

어느 쪽이든, 숫자가

@ManagedProperty("#{param.prev}") 
private String prev; 

@ManagedProperty("#{param.next}") 
private String next; 

또는 넓은 범위 빈으로 사용할 콩 범위 요청에

String prev = externalContext.getRequestParameterMap().get("prev"); 
String next = externalContext.getRequestParameterMap().get("next"); 

요청 매개 변수를 응용 프로그램 범위 특성과 혼동하는 점에 유의하십시오. 이것은 당신이 무엇을하고 있는지 전혀 알지 못한다는 것을 증명하는 꽤 중요한 혼합입니다. 잠시 멈추고 기본 JSF 튜토리얼을 다시 한번 읽어 보길 강력히 권합니다.

+0

매우 도움이되었습니다. 고맙습니다. – burnmyheaven

+0

반갑습니다. – BalusC

0

getApplicationMap() 부분이 FaceUtil일까요? 내가 외부 문맥을 만지는거야 때, 요청 맵에서 값을 검색 할 수있다 :

귀하의 경우
Map<String, String> pMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); 

, pMap는 키 hideNext를 포함해야합니다.

+0

시도 : Map pMap = FacesContext.getCurrentInstance(). getExternalContext(). getRequestParameterMap(); \t \t nextFlag = pMap.get ("hideNext"); \t \t prevFlag = pMap.get ("hidePrev"); 그러나 그것은 공허하게 서있다. – burnmyheaven

+0

"유휴"란 무엇을 의미합니까? nextFlag 및 prevFlag 변수는지도에서 가져온 후에도 여전히 null입니까? – mabi

+0

예, 여전히 null입니다. – burnmyheaven

0

시도 (문자열) context.getExternalContext(). getRequestParameterMap(). get (parameterName); 귀하의 경우 parameterName은 nextFlag 또는 prevFlag 일 수 있습니다.

+0

그것도 작동하지 않습니다. (시도했습니다 \t \t nextFlag = FacesContext.getCurrentInstance(). getExternalContext(). getRequestParameterMap().get ("hideNext"); \t \t prevFlag = FacesContext.getCurrentInstance(). getExternalContext(). getRequestParameterMap(). get ("hidePrev"); – burnmyheaven

+0

firebug inspect 요소를 사용하여 브라우저에서 jsf 페이지를 렌더링 할 때 hidePrev 또는 hideNext 값을 인쇄하는지 확인하십시오. – psi

관련 문제