2012-12-25 2 views
4

아래 페이지에서 명령 단추를 누르면 탐색에 실패합니다. 버튼을 클릭하면 페이지가 새로 고쳐지고 URL 매개 변수가 제거되고 색인 페이지로 이동하는 대신 필요한 오류 메시지가 표시됩니다.JSF ViewParam 필수 + AJAX가 페이지를 넘깁니다

그러나 필요한 속성을 제거하거나 f : .

com.sun.faces JSF 2.1.13 및 primefaces 3.4 사용.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 

<h:head></h:head> 

<f:metadata> 
     <f:viewParam name="product" 
      required="true" requiredMessage="Bad request. Please use a link from within the system."/> 
    </f:metadata> 

<body> 

    <h:form id="form"> 
     <h:selectBooleanCheckbox> 
      <f:ajax update="form" /> 
     </h:selectBooleanCheckbox> 
     <h:commandButton value="buy" action="/index.xhtml?faces-redirect=true" /> 
    </h:form> 

</body> 
</html> 

답변

11

나는 update="form"가 부주의 단순화 것을 당신이 실제로 render="@form"를 사용하는 의미와 PrimeFaces와 정도를 혼동이라고 가정합니다.

구체적인 문제로 돌아가서 뷰 매개 변수의 처리를 트리거하는 비 아약스 포스트 백을 수행하여 발생합니다.

중 하나는, 그것은 단지 (콩보기하지만 범위가 있는지 확인) 비 포스트 백에 필요한

<f:viewParam ... required="#{not facesContext.postback}" /> 

를하거나뿐만 아니라 포스트 백에

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

그것을 전달하거나 대신 OmniFaces <o:viewParam>를 사용 뷰 범위 bean을 이미 사용하고 있다면. 포스트 백에서 뷰 매개 변수를 처리하지 않습니다.

<... xmlns:o="http://omnifaces.org/ui"> 
... 
<o:viewParam ... /> 
+0

첫 번째 옵션은 여전히 ​​실제 페이지에 문제를 일으키는 것으로 나타났습니다. 다소 복잡합니다. –

+0

첫 번째 솔루션은 매력처럼 작동합니다. 감사! – guest