2014-01-30 1 views
1

거대한 프로젝트의 경우 웹 페이지에 여러 양식을 작성해야합니다. 세부 사항으로 갈 수는 없지만 요청 된 양식 목록 구조가 있다고 가정하십시오. ,h : 양식 내부 UI : 반복이 예상대로 작동하지 않음

@ManagedBean 
@SessionScoped 
public class Debug { 
    private final List<DebugBean> list; 

    public Debug() { 
    super(); 
    this.list = new ArrayList<DebugBean>(); 
    this.list.add(new DebugBean("label 1", "value 1")); 
    this.list.add(new DebugBean("label 2", "value 2")); 
    } 

    public String submit() { 
    LOGGER.info("list = " + this.list.toString()); 
    return ""; 
    } 

    public List<DebugBean> getList() { 
    return this.list; 
    } 
} 

콩 DebugBean은 간단 두 변수 레이블과 값, 모두 문자열, 그 세터와 게터를 포함

인 Mojarra의 JSF 2.2.5을 사용하여 콩 관리 주어진.

이제 XHTML 페이지

:

<h:body style="height: 100%"> 
    <ui:repeat value="#{debug.list}" var="x"> 
    <h:form> 
     <h:panelGrid columns="2"> 
     <h:outputText value="#{x.label}" /> 
     <h:inputTextarea value="#{x.value}" /> 
     </h:panelGrid> 
     <h:commandButton action="#{debug.submit}" value="ok" /> 
    </h:form> 
    </ui:repeat> 
</h:body> 

문제는 첫 번째 값을 변경입니다. 두 번째 것을 변경하면 로거가 나에게 예상대로 새 값을 제공합니다. 하지만 첫 번째 것을 변경하면, 로거는 나에게 이전 목록을 제공합니다. 마치 변경없이 전체 양식을 다시로드 한 것처럼 말입니다. 여기에 어떤 문제가 있으며 무엇보다 중요합니다. 작동하게하려면 어떻게해야합니까?

답변

0

해결책은 간단하지만 더 나쁩니다. 나는 이유를 모르지만, UI : 반복은 h : dataTable처럼 행동하지 않습니다. 그래서 을 ui : repeat를 h로 대체합니다. dataTable은이라는 문제를 해결하지만 페이지 레이아웃 재 작업을 의미합니다 (더 큰 문제이지만 나에 의해 수행 될 수 있음).

관련 문제