2014-01-22 2 views
0

우선 JSF를 처음 사용합니다. xhtml 페이지에서 작업 결과를 얻을 수 있습니까?JSF2.2 : 조치 결과 얻기 (새로 고침 없음)

그럼 제가 약간의 예를 들어 설명 드리겠습니다. 상황은 아래의 대화 상자가 모두 끝났습니다.

<p:dialog widgetVar="dialog" modal=true> 
    <h:outputLabel for="inTxt" value="Seats:" /> 
    <h:inputText id="inTxt" value="#{model.seats}" /> 
    <p:commandButton value="Save" 
    action="#{model.saveAction()}" 
    oncomplete="PF('dialog').hide();"/> 
</p:dialog> 

saveAction의 경우

public Class Model { 
    private int seats; 
    ... 
    public String saveAction() { 
    if(seats == 10) { 
     return "success" 
    } else { 
     return "failure" 
    }   
    } 
    // Getter & Setter 
} 

() 반환 "실패"대화 폐쇄 안 (모델은 backBean입니다). 이 모든 작업은 페이지를 다시로드하지 않고 수행해야합니다. 이것이 가능한가?

답변

1

아약스를 사용하는 것이 가능합니다. 먼저 메소드가 무효화되어야하며 commandButton의 속성은 action 대신 actionListener 여야합니다. 다음은 commandButton 코드입니다.

<p:commandButton value="Save" 
    actionListener="#{model.saveAction}" /> 

성공한 경우 프로그래밍 방식으로 리디렉션해야합니다. 관리 빈에서 대화 상자를 닫습니다이 코드를 사용, 실패의 경우

FacesContext context = FaccesContext.getCurrentInstance(); 
context.getApplication().getNavigationHandler().handleNavigation(context, null, "/success?faces-redirect=true"); 

: primefaces에서

RequestContext.getCurrentInstance().execute("dialog.hide()"); 

비슷한 뭔가 데모가 전시이 코드를 사용할 수 있습니다. 관리 빈에서 대화 상자를 닫는 대신 매개 변수를 다시 페이지로 보내고 javascript 메서드로 대화 상자를 닫습니다. 이것은 link

+0

입니다. Primefaces의 예는 훌륭합니다. 그래서 서버가 작업 할 시간이 필요하면 페이지를 잠글 수 있습니다. – ray