2011-11-26 3 views
2

애플리케이션에서 입력 양식을 작성하려고하는데 뷰가 반복되고 입력 필드를 만드는 네 개의 "빈"답변으로 시작합니다. 나는 대답의 배열에 하나의 질문을 추가 한 다음,보기가 응답을 다시 렌더링하는 추가 대답 버튼을 가지고 있지만 지금은 추가 입력 필드가 있습니다. Backing 빈은 viewscoped이다. 그러나 추가 답변 버튼을 누르지 않고 양식을 제출하면 모든 것이 작동합니다. 데이터는 데이터베이스에 저장됩니다. 그러나 4가 채워진 후 답을 추가하면 마지막 입력란에서 데이터를 가져 오지 않습니다 (answer.description). 입력 필드를 모두 채우지 않고 추가 답변을 먼저 누르면 입력란의 데이터가 모두 캡처되지 않으므로 5 개의 데이터가 모두 비어 있으므로 데이터가 데이터베이스에 저장되지 않습니다.ui : repeat의 동적으로 추가 된 입력 필드가 양식 제출 중에 처리되지 않습니다.

나는 형식에서이 네 빈 입력 필드와 답변 배열을 초기화하는 데 사용

public String addAnswer() { 
    if (answers.size() + 1 < 6) { 
     Answer answer = new Answer(); 
     answer.setSerialNumber(answerSerialNumber + ""); 
     answerSerialNumber++; 
     answers.add(answer); 
    } 

    return null; 
} 

:

 <ui:repeat var="answer" value="#{bean.answers}"> 
      <div class="field"> 
       <h:outputLabel for="answerAlternative-#{answer.serialNumber}" 
        value="Svaralternativ #{answer.serialNumber}" /> 
       <h:inputText id="answerAlternative-#{answer.serialNumber}" 
        value="#{answer.description}" size="40" /> 
      </div> 
     </ui:repeat> 

이 새로운 입력 필드를 생성하는 방법이다

@PostConstruct 
public void initBean() { 
    answers = new ArrayList<Answer>(); 

    for (int i = 0; i < 4; i++) { 
     addAnswer(); 
    } 
} 
+0

JSF impl/version은 무엇입니까? Mojarra는 ''과 부분적으로 상태를 저장하는 데 오랫동안 심각한 문제가있었습니다. 대부분은 현재 2.1.4에서 수정되어야합니다. MyFaces에는 이러한 종류의 문제가 없어야하며, 시도해 볼 수 있습니다. 또한 ''을 사용하여이 파일을 제외 할 수도 있습니다.이 시나리오에서는 아무런 문제가 없어야합니다. – BalusC

+0

내가 사용하는 버전을 어디에서 확인할 수 있습니까? – LuckyLuke

+0

일반적으로 webapp 시작 로그에 인쇄됩니다. IDE 콘솔을 확인하십시오. Mojarra의 경우 'INFO : 컨텍스트'/ 놀이터 '에 Mojarra 2.1.4 (SNAPSHOT 20111107) 초기화 중입니다. – BalusC

답변

5

이 모양은 Mojarra의 <ui:repeat>의 현재 문제와 일치합니다. 모하 라에서는 totally broken입니다.

  • 이 방법 <ui:repeat>의보다 안정적인 구현이 MyFaces에 의해 인 Mojarra를 교체 :

    당신은 기본적으로 2 가지 옵션이 있습니다.

  • <ui:repeat> 대신 UIData 구성 요소를 사용하십시오. <h:dataTable>, 토마 호크의 <t:dataList>, PrimeFaces의 <p:dataList>