2014-05-15 4 views
1

java 및 PrimeFaces를 사용하여 응용 프로그램을 개발 중입니다.페이지 새로 고침시 데이터가 다시 생성됩니다.

if(dataList==null){ 
     //logic here 
     flag=false; 
    } 

그러나 시간 만 시간을 위해, 그것의 것 : 페이지가로드 제어 아래 조건의 경우 가야 때마다 때

class ShowRecordsManagedBean{ 
private List<RecordDTO> recordInfoList = null; 
... 
.. 
    public List<RecordDTO> getRecordList() { 
     boolean flag=true; 
     try { 
      if(dataList==null){ 
       //logic here 
       flag=false; 
      } 
      if(dataList!=null && flag){ 
       //Logic here 
      } 
     } catch (Exception e) { 

     } 
     return dataList; 
    } 

문제는 다음과 같습니다 아래는 내가 작성한 자바 코드는 위의 if (..) 조건, 나중에 페이지를 새로 고침해도 다른 것 (..)이있는 경우. 내가 그것을 가지고있는 페이지를 새로 고침 할 때마다이 경우 페이지 사림이 모두를 초기화하는 경우에도 첫 번째 (..) 조건이 기본적으로 개체 값이 null이되고 있지 않습니다 가야한다는, 조건을 수정하는 방법

if(dataList!=null && flag){ 
      //Logic here 
     } 

선언 중에 null에 초기화하는 오브젝트 브라우저를 닫거나 캐시를 삭제하여 다른 if (dataList! = null & & 플래그) 조건을 입력해야합니다.

아래와 같이 수정

:

@ManagedBean 
@ViewScoped 
public class ShowRecordsManagedBean { 
    //fields declaration 
private List<RecordsDTO> recordInfoList = null; 
    @PostConstruct 
    public void init() { 
     recordInfoList = null; 
    } 
    //getters, setters and other methods... 
public List<RecordDTO> getRecordList(){ 
.. 
} 
} 

여전히 문제가 아직 해결되지. 페이지를 새로 고칠 때 dataList는 null이되지만 이전 값을 유지해야합니다. 제안 해주세요. 감사합니다. .

+0

JSF도 사용하고 있습니까? 어떤 버전입니까? –

+0

@Luiggi Mendoza - 예 Primefaces4 및 JSF2. – user3633028

+0

질문이 있습니까? http://stackoverflow.com/questions/23682105/primefaces-conditional-check – Mark

답변

0

빈은 @RequestScoped으로 생성되므로 모든 요청에 ​​대해 다시 작성됩니다. 더 오래 살 수있게하려면 범위를 적어도 @ViewScoped까지 넓혀야합니다. 이런 방식으로, 클라이언트가 동일한 뷰에있는 동안 bean은 살아있을 것이고, 동일한 뷰에서 ajax 요청을 처리 할 때 매우 유용하다.

또한 getters는 뷰 (JSP 또는 Facelets)에서 여러 번 호출 될 수 있으므로 필드의 getters/setter에서 비즈니스 로직을 제거해야합니다. 주석이 달린 메소드에서 bean에 대한 초기 데이터를로드해야합니다 (@PostConstruct).

귀하의 빈은 다음과 같아야합니다

@ManagedBean 
@ViewScoped 
public class ShowRecords { 
    //fields declaration 
    @PostConstruct 
    public void init() { 
     //initialize your fields here 
     //logifc to initialize dataList goes here 
    } 
    //getters, setters and other methods... 
} 

더 많은 정보를 원하시면 : 대답, BU의


일부가 아닙니다 당신이 JSF 2와 PrimeFaces 4를 사용하고 있기 때문에, 은 뷰 기술로 JSP 사용을 중단하고 Facelets으로 이동해야합니다.

+0

도움을 주셔서 감사합니다. 그러나 언급 한대로 ManagedBean의 범위를 ViewScoped로 수정하면 "ViewScoped를 유형으로 확인할 수 없습니다."라는 오류가 발생합니다. – user3633028

+0

@ user3633028 필요한 가져 오기를 추가 했습니까? 다른 라이브러리도 사용하고 있습니까? –

+0

감사합니다. 라이브러리를 가져 오는 것을 잊었습니다. 나는 당신을 시도하고 업데이트 할 것입니다. – user3633028

관련 문제