2011-09-07 7 views
0

모든 테이블의 dataTable을 표시하고 createTable.jspx에 대한 링크가있는 페이지 tables.jspx가 있습니다. 새 테이블을 만들면 tables.jspx로 반환되지만 새 테이블이있는 목록은 표시되지 않습니다. (tablesBean과 createTableBean은 요청 범위입니다). 나는 BalusC 튜토리얼 http://balusc.blogspot.com/2006/06/using-datatables.html에 따라 게터의 테이블 목록을 지연 초기화합니다. 지금까지는 콩이 범위를 요청하는 경우 요청이 완료된 후에는 삭제해서는 안됩니다. 탐색은 tables.jspx -> createTable.jspx -> tables.jspx입니다. 나는 새 테이블을 만든 후에 새 테이블로 새 목록을 표시하는 테이블 목록으로 돌아갑니다. 내가 뭘 잘못하고 있는지 이해하도록 도와주세요. 여기 범위가 지정된 bean JSF를 요청합니다.

은 (간체) 게터의 테이블 내 목록을 반환 내 코드입니다 :

public List getTables(){ 
    if(tables==null){ //lazy initialization for a request bean as recommended by BalusC 
    //Return list of tables 
    } 

하지만 if(tables==null ||FacesContext.getCurrentInstance().getRenderResponse())

내 목록이 줄을 if(tables==null) 을 변경하면 내가 돌아올 때 실현된다 createTable.jspx에서 bean이 세션 범위에있을 때이 변경이 권장되지만, 이는 내 dataPaginator 및 sortColumn 함수에 문제를 가져옵니다 (열을 기준으로 목록을 정렬 할 때 DB에서 새로운 데이터를 반환하므로 내가 편집했기 때문에 잘못된 행 편집에 대한 각 행의 링크를 삭제) 당신이 코드를 게시하지 않았기 때문에

답변

1

, 나는 당신이 것을 정확이 발생 될 수 있습니다 무엇을 설명하기 위해 위의 링크 된 튜토리얼 ...

private void loadDataList() { 

     // Do your "SELECT * FROM mydata" thing. 
     try { 
      dataList = dataDAO.list(); 
     } catch (DAOException e) { 
      setErrorMessage(e.getMessage() + " Cause: " + e.getCause()); 
      e.printStackTrace(); 
     } 
    } 

를 사용합니다 요청 범위가 지정된 bean tables이 여기에서 TWICE로 작성되고 파기됩니다. 그러나 구성 될 때마다 위에 나열된 메소드가 호출됩니다. 그러면 데이터베이스의 현재 데이터를 기반으로 테이블이 다시 초기화됩니다.

createTable.jspx이 데이터베이스의 데이터를 수정해야하는 경우 해당 업데이트가 발생하지 않았거나 새 데이터가 요청 bean에 의해 필터링됩니다.

+0

요청한 bean이 데이터를 필터링하고 있다고 생각하지 않습니다. 여기에 내 코드가 있습니다. – Mel

관련 문제