2012-01-25 4 views
0

데이터 테이블에 새 행을 추가 할 때 데이터 테이블 값이 유지되지 않는 문제가 있습니다. 요청 범위에 콩을 가져야 만합니까? 이후에 추가 할 때 업데이트 된 데이터 테이블 값을 유지할 수있는 방법이 있습니까? 내 경우에는 (datatable의 value 속성을 사용하는) 바운드리스트는 모든 행 추가 액션 동안 항상 비어 있습니다.Datatable은 새 행을 추가 할 때 다른 행의 값 편집을 유지하지 않습니다.

콩 :

public class Students { 
    private StudentService service; 

    @PostConstruct 
    public void init() { 
    list = service.list(); 
    } 

    public void add() { 
    list.add(new Student()); 
    } 

    public void save() { 
    service.save(list); 
    } 
} 

형태 : 당신이 요청 콩이있는 경우

<h:form> 
    <h:dataTable value="#{students.list}" var="student"> 
     <h:column><h:inputText value="#{student.name}" /></h:column> 
    </h:dataTable> <h:commandButton value="Add" action="#{students.add}" /> 
    <h:commandButton value="Save" action="#{students.save}" /> 
</h:form> 
+0

이미 게시 된 비슷한 문제가 있지만 내 bean이 요청 범위에만 있어야하기 때문에 soultion을 구현할 수 없습니다 .http : //stackoverflow.com/questions/8118734/datatable-dont-retain-the-newly-added -object/8994875 # 8994875 – JSF

답변

0

, 한 가지 방법은 해당 구성 요소에 valueChangeListener = "# {bean.ajaxCall을}"이 있고 빈을하는 것입니다 bean의 ajaxCall 메소드. 이 방법은 백킹 빈에서 ajax 호출을 통해 값을 저장하고 데이터 테이블에 대한 업데이트 후에도 유효합니다.

+0

감사합니다. Ravi .. 아약스 호출없이 가능하다면 궁금합니다. 이미 아약스로 시도해 보았습니다. 그러나 최종 제출 또는 데이터 테이블에 저장하는 동안 문제가 발생했습니다. 값은 널 (즉 테이블에 바인드 된 목록)입니다. 나는 배울려고합니다. – JSF

+0

xhtml 파일의 일부 코드와 bean의 저장 방법을 게시 할 수 있습니까? – Ravi

+0

이 공용 클래스와 유사합니다. Students { private StudentService 서비스; @PostConstruct public void init() { list = service.list(); } public void add() { list.add (new Student()); } public void save() { service.save (list); } } <시간 : 데이터 테이블 값 = "# {students.list}"VAR = "학생"> <시간 : InputText]를 값 = "# {student.name}"/> JSF

관련 문제