2012-12-17 3 views
5

ViewScope 모드에서 Managed Bean을 사용하고 있습니다. 그래서,이 Managed Bean에서 어떤 동작을 호출하면 내 페이지가 업데이트되지 않습니다. 내 동작이 잘 호출되고 null을 반환하는 것을 볼 수 있습니다 (뷰 스코프 작업 흐름은 정상입니다).JSF ViewScope - 동작에서 null을 반환하면 뷰가 업데이트되지 않습니다.

그래서 내가 뭘 잘못하고 있니?

Ajax를 사용하여 페이지를 다시 렌더링하면 올바르게 작동합니다.

편집 :

내 버전은 다음과 같습니다

JSF 2.1.14 Primefaces와 3.4.1

내 코드 :

@ManagedBean(name = "test") 
@ViewScoped 
public class TestMB implements Serializable { 
    private String status; 

    public String getStatus() { return this.status; } 
    public void setStatus(String status) { this.status = status; } 

    public String changeStatus() { 
     this.status = "ViewScope Works!"; 
     return null; 
    } 

} 

내 페이지 :

<!DOCTYPE HTML> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
       xmlns:ui="http://java.sun.com/jsf/facelets" 
       xmlns:h="http://java.sun.com/jsf/html" 
       xmlns:f="http://java.sun.com/jsf/core" 
       xmlns:p="http://primefaces.org/ui" 
       template="/template/ui.xhtml"> 
    <ui:define name="head"> 
    </ui:define> 
    <ui:define id="teste" name="content"> 
     <h:form id="form"> 
      <h:outputText id="status" value="OK?: #{test.status}" /> 
      <p:commandButton id="myAction" value="Do it!" action="#{test.changeStatus}" /> 
     </h:form> 
    </ui:define> 
</ui:composition> 

내 정보 상태 변수가 변경되지 않습니다. 그리고 네. 그 행동은 OK라고합니다. 어떤 팁?

+0

명백한 피하기 위해,이 작업은 ajax에 의해 호출 되었습니까? 따라서, 당신은 아약스에 의해 액션을 호출하고 있지만, 아약스에 의해 페이지를 업데이트하지는 않습니까? – BalusC

+0

아니요. 저는 두 가지 방법을 시도합니다 : 보통과 By Ajax. 정상적으로 작동하지 않습니다. 아약스/구성 요소보기를 rerender, 잘 작동합니다. HTML 응답이 OK (정상적인 호출에 의해)를지지하고 있지만 VIEW가 새로 고치거나 업데이트되지 않는다는 것을 방화범이 들려왔다. – abyteneverlie

+0

SSCCE의 코드에 코드를 표시하십시오. JSF를 준비하는 방법은 JSF 위키 페이지 http://stackoverflow.com/tags/jsf/info – BalusC

답변

8

<p:commandButton>을 사용하여 양식을 제출했습니다. 기본적으로 ajax 요청을 보냅니다. 기본적으로 아무것도 업데이트하지 않습니다. 당신이 관찰하는 행동은 따라서 완전히 예상됩니다. (실제로 문제가 아니지만, 단지 개념 오해로 인용)이 "문제"를 해결하는 방법은 여러 가지가 있습니다

  1. 가 아약스를 사용하지 그것을 말해.

    <p:commandButton ... ajax="false" /> 
    
  2. 양식을 업데이트하라고 알려주십시오.

    <p:commandButton ... update="@form" /> 
    
  3. 는 기본적으로 Ajax를 사용하지 않는 표준 JSF 구성 요소로 교체합니다. 이 구체적인 문제가 뷰 범위 자체에 관련이 있음을

    <h:commandButton ... /> 
    

참고. 요청 범위를 포함하여 다른 범위를 사용할 때 똑같은 문제가 발생할 수 있습니다.

관련 문제