2012-09-07 2 views
4

간단한 양식의 xhtml 페이지가 있습니다. 이 페이지는 여러 데이터 테이블에 사용됩니다. 데이터 테이블을 지정하기 위해 (그리고 계속) GET 요청 매개 변수를 사용합니다. XHTML 페이지유지 방법 f : 유효성 검사 실패시 다시 게시 후 viewParam 값이 실패했습니다.

<f:metadata> 
    <f:viewParam id="page" name="page" value="#{itemsBean.page}"/> 
    </f:metadata> 

를 통해 수신

<navigation-case> 
    <description> 
    Global rule for going to the items page from any page 
    </description> 
    <from-outcome>items</from-outcome> 
    <to-view-id>/items.xhtml</to-view-id> 
    <redirect> 
    <view-param> 
     <name>page</name> 
     <value>#{itemsBean.page}</value> 
    </view-param> 
    </redirect> 
    </navigation-case> 

같은 탐색 규칙을 다시 통과하지만이

<h:inputText id="itemName" value="#{itemsBean.name}" 
    required="true" requiredMessage="Value for this field required!"/> 

처럼 XHTML 파일에서 입력을 사용하는 경우 내가보기 PARAM을 복원 할 수 없습니다 입력 된 텍스트가없는 양식을 승인하려고 시도한 후에 나는 매개 변수 전달

<h:inputHidden id="page" value="#{itemsBean.page}" /> 

에 대한 숨겨진 입력을 사용하려했으나 검증 전에 실행 itemsBean.page 여전히 비어처럼 보인다. itemsBean은 RequestScoped입니다. 내가 뭘 잘못 했니? param을 어떻게 전달할 수 있습니까?

시간을 낭비 해 주셔서 감사합니다.

답변

3

계속되는 요청에 요청 매개 변수를 전달해야합니다. "plain vanilla"HTML에서는 실제로 <input type="hidden">을 사용했지만 JSF <h:inputHidden>은 그런 식으로 작동하지 않습니다. 다른 입력 필드로 인해 발생하는 일반적인 유효성 검증 오류의 경우 <h:inputHidden>과 관련된 모델 값은 전혀 업데이트되지 않습니다.

UICommand 구성 요소에 <f:param>을 사용하여 후속 요청에 대한 요청 매개 변수를 유지해야합니다. 예 :

<h:commandButton ...> 
    <f:param name="page" value="#{param.page}" /> 
</h:commandButton> 

또는, 당신은 기본적으로 폼 액션 URL에서 후속 요청에 대한 뷰 매개 변수를 유지할 수 있도록하는 추가 속성 includeViewParams으로 <h:form>을 확장의 OmniFaces JSF utility library<o:form>를 사용할 수 있습니다.

<o:form includeViewParams="true"> 
    ... 
</o:form> 

이 여러 개의 명령 단추/링크와 아약스의 행동이있는 경우 쉽게로 끝낼 수 있으며, 이것은 당신이 비 아약스 포스트 백 동안 동일한 URL을 유지하고 싶은 경우 유일한 방법이 될 것입니다.

+0

감사합니다. 난 그냥 태그를 commandButton에 시도하는 것을 잊지. temprory 솔루션을 위해, 필자는 inputText에서 "required"및 "requiredMessage"속성을 제거하고 itemsBean 및 탐색 규칙을 통해 값을 확인합니다. – gooamoko