2011-03-24 1 views
2

jsf 양식과 양식 데이터에 대한 보고서를 인쇄 할 단추가 있다고 가정 해보십시오. 이 버튼은 새 페이지 (대상 = 빈)의 데이터를 열 필요하지만 시간 : 난 그냥 열어 보고서 페이지 전에 데이터를 저장하기 위해 필요에 따라 버튼을는 적합하지 않습니다. 있는 명령 보고서 페이지로 저장 작업을 만든다 다음 리디렉션 : 그래서, 시간 사용하는 엔티티가 완벽하게 저장됩니다JSF 2.0 : 리디렉션 (대상 = 비어 있음) 후보기를 저장하는 방법

<h:commandLink styleClass="reportButton" action="#{polisBean.doReportPrint}" 
        target="_blank" id="reportListLink"> 
        Print report 
       </h:commandLink> 

@ViewScoped 
@Named 
public class PolisBean 
    ... 
    public Object doReportPrint() {   
    if (canEdit() && this.submit() == null) { 
     return null; 
    } 

    return "printReport"; 
} 
<navigation-case> 
     <from-outcome>printReport</from-outcome> 
     <to-view-id>/polises/reportList.xhtml</to-view-id> 
     <redirect include-view-params="true"> 
      <view-param> 
       <name>id</name> 
       <value>#{polis.id}</value> 
      </view-param> 
     </redirect> 
    </navigation-case> 

을하고 새 페이지는 보고서에 열려 있습니다. 좋은. 그러나 초기 폼 페이지로 돌아가서 다시 저장하려고하면 뷰가 만료되고 새로운 것으로 빌드됩니다 (포스트 백 요청이 아니기 때문에 이것은 JSF에 대한 완전히 새로운 요청입니다. 페이지!). 두 번째 페이지를 열 때 리디렉션이 완료되었지만,이

내가 시도 ... 모두보기 빈 데이터 범위 잃어버린 방지하지 않습니다 CDI에서 conversationScope을 실행하는 동안,하지만 "ContextNotActiveException 던졌습니다 : 용접 001,303을 내가 초기 페이지로 다시 켤 때 범위 유형에 대한 활성화 컨텍스트는

사람이 문제를 해결했습니다 ... "예외를 javax.enterprise.context.ConversationScoped하지? 리디렉션 (새 페이지로)을 사용하여 양식 제출을 수행 할 수 있지만 초기 데이터가 손실되지 않도록하려면 어떻게해야합니까?

답변