내가에서 MyFaces 1.2.3에서 your demo code 코드를 실행하는 시도 : 아래
<managed-bean>
<managed-bean-name>TestPageBackingBean</managed-bean-name>
<managed-bean-class>test.jsf.TestPageBackingBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
등판 빈 코드 :
다음
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<html>
<head>
</head>
<f:view>
<body>
<h:form styleClass="form" id="form1">
<h:commandButton value="Save" action="#{TestPageBackingBean.save}" styleClass="commandExButton"/>
<h:outputText styleClass="label" value="Header Table"/>
<h:dataTable binding="#{TestPageBackingBean.headerDataTable}"></h:dataTable>
</h:form>
</body>
</f:view>
</html>
는 얼굴의 설정입니다 : 아래 은 JSP입니다 Glassfish에서 Mojarra 2.0.0 Beta를 사용했지만 문제를 재현하지 못했습니다. save() 메소드는 필드에 입력 한 값을 인쇄했습니다.
는 (에서 MyFaces를 사용하려면, 나는 아마도 그들이 테이블 렌더러를 구현하는 방법에)
새로운 HtmlDataTable()을
새 인 UIData을 (변경했다,하지만 작은 변화이다.) 나는 콩에 대해 몇 가지를주의 할 것이다 :
- 테이블 게터는 열을가 호출 될 때마다 계속 추가됩니다 -
- 유지를 저장하는 서버 측 상태 페이지 새로 고침에 같은를 세션빈의 UIComponent에 대한 참조는 일반적으로 좋은 생각이 아닙니다. (나는 모두가이 작업을 수행 실현하지만) 당신은 직렬화를 구현 해야하는 구성 요소 바인딩
- 세션 Bean의 요청 범위를 사용하여 더 나을 것이고, UIComponents의는
- 이 구성 요소가있는 경우 여러 뷰에 끝낼 수 있습니다 직렬화 할 수 없습니다 사용자가 두 번 페이지를 엽니 다 - 동시 처리 문제 spec에 따라
- : JSF가 뷰를 만들 때 getter를 통해 바인딩 된 구성 요소를 사용합니다. 이 (제출에) 뷰를 복원 할 때하지만, 그렇게 참조를 유지 세터를 통해 구성 요소를 설정합니다입니다 (고작) 중복
당신은 같은에 게터를 변경할 수 있습니다 이 :
private UIData headerDataTable;
public UIData getHeaderDataTable() {
if (headerDataTable == null) {
headerDataTable = new UIData();
getHeaderTable(headerDataTable);
}
return headerDataTable;
}
나는 이러한 변화하지만, 문제가 해결 것이라고 확신하지 않다 - 당신이 계속 문제가 발생하는 경우, 자세한 내용은 다시 시도 - 당신의 JSF 구현, 버전 및 javax.faces.STATE_SAVING_METHOD의 값을 매개 변수는 입니다. web.xml (있는 경우).
문제를 재현하는 매우 간단한 페이지와 빈을 제공 할 수 있습니까? 문제를 좁히는 데 도움이 될 것입니다. – McDowell