2011-08-16 6 views
2

faceface jsf 2.0을 primefaces 3.0.M2 구성 요소 라이브러리와 함께 사용하고 있습니다. 데이터 테이블 선택이 발생할 때 채워지는 iput 필드를 포함하여 동적 행 번호를 얻으려고합니다.ui에서 입력 바인딩 : jsf의 반복

입력란을 사용하여 동적 행이 올바르게 생성 될 때마다 다음 선택 항목에 대한 첫 번째 선택 이후에는 동적 행 수가 올바르게 변경되지만 입력 필드는 업데이트되지 않고 첫 번째 선택 항목의 입력이 계속 표시됩니다.

여기는 facelet의 목록을 반복하는 방법입니다.

<ui:repeat value="#{goalEntranceBean.selectedCard.parameterList}" var="prmBean" > 
     <li><h:outputText value="#{prmBean.lookUp.value}"/></li> 
     <li> 

      <h:outputText value="Weight:"/> 
      <p:inputText id="wx" required="true" value="#{prmBean.weight}"> 
      </p:inputText> 
      <h:outputText value="Percent:"/> 
      <p:inputText required="true" value="#{prmBean.percent}"> 
      </p:inputText> 
     </li> 

    </ui:repeat> 

내 콩 여기서 나는 카드 목록을 가져오고 selectedCard를 datatable의 rowSelect 이벤트로 설정합니다. 내가 디버그 모드에서 선택한 경우

@ManagedBean(name = "goalEntranceBean") 
@ViewScoped 
public class GoalEntranceAction implements Serializable { 

private List<ScoreCard> personalCards = new ArrayList<ScoreCard>(); 

    private ScoreCard selectedCard = new ScoreCard(); 
...... 
} 

은 내가 진정한 목록을 볼 수 있지만 화면의 요소는 변경되지 않습니다.

답변

2

이것은 일반적인 문제입니다 (며칠마다 묻습니다). 긴 이야기를 짧게하기 위해, ui : repeat 내부의 입력은 작동하지 않습니다.

오래 전부터 유명한 유명한 JSF에는 문제가 있습니다. 어쩌면 수정 될 것입니다. 어쩌면, 아무도 정말로 신경 쓰지 않는 것 같습니다 (나는 말합니다 - 입력 ...? ui : 반복? 그런 미친 시나리오!).

빠른 해결 방법은 h : dataTable을 사용하는 것입니다. 아마도 css를 악용하여 악용 될 수 있으므로 목록처럼 보이게 할 수 있습니다. 긴 수정은 다른 라이브러리의 일부 반복자를 사용하는 것입니다. Primefaces에는 정렬되지 않은 목록을 렌더링하는 작동해야하는 요소가 있습니다.

1

작동하도록 만들 수도 있지만 해결 방법은 입력을 백업 빈에 바인딩하고 리스너를 통해 (인수에 수신 된 새 값을 사용하여) 백업 빈의 컨트롤 값을 업데이트하는 것입니다. 분명히 페이지의 각 컨트롤에 대해 backing bean에 리스너/컨트롤을 추가해야하므로 복잡한 폼이있는 경우에는이 방법이 좋은 솔루션이 아닙니다. 단 하나 또는 두 개의 입력 만 있으면 실용적입니다.

2

답장을 보내 주셔서 감사합니다. 솔루션 공유를 잊어서 죄송합니다. 위에서 언급했듯이 나는 primefaces datatable 있습니다. 행 선택 이벤트에서 데이터 테이블을 렌더링하고 해당 데이터 테이블의 셀을 업데이트하려고합니다. p : inputtext를 사용하면 쉽게 내 문제를 해결할 수 있습니다. 이제 화면에서 데이터를 변경할 수 있으며 화면에서 업데이트 작업 후 값을 볼 수 있습니다. 이유는 모르겠지만 작동합니다.

<p:dataTable var="orgPrmBean" 
       value="#{scoreCardOperationsBean.selectedCard.orgParameterList}" 
       emptyMessage="#{labels.norecord}" 
       rowKey="#{orgPrmBean.id}" 
      > 

     <p:columnGroup type="header"> 
      <p:row> 
       <p:column headerText="Parameters" colspan="3" style="text-align:left;width:480;"/> 
      </p:row> 
     </p:columnGroup> 


     <p:column style="text-align:left;width:200px;"> 
      <h:outputText value="#{orgPrmBean.info}"/> 
     </p:column> 

     <p:column style="text-align:left;width:180px;"> 
      <p:inputText value="#{orgPrmBean.weight}" 
         rendered="#{scoreCardOperationsBean.selectedCard.goalEdit}"> 
       <f:convertNumber maxFractionDigits="0"/> 
      </p:inputText> 

     </p:column> 

    </p:dataTable>