我正在使用com.sun.faces
版本2.1.18
。在我的應用程序中,我有一個動態的問題列表。我使用<ui:repeat>
來呈現每個問題。根據問題的類型,我呈現一種輸入組件和驗證。如果是數字範圍問題,我使用<h:inputText>
和<f:validateLongRange>
。在ui中使用具有可變屬性的驗證程序:重複
我遇到的問題是<f:validateLongRange>
上的minimum
和maximum
屬性始終設置爲第一個問題的最小值和最大值。所以,當你使用驗證器的時候,第一個問題就會失敗。這是否應該發生?有沒有一種方法可以對動態生成的組件進行驗證?我希望可以在不切換到<c:forEach>
的情況下解決。
代碼片段:
<ui:repeat value="#{questionnaire.questionsCollection}"
var="question" varStatus="status">
..
<h:inputText rendered="#{question.qutyId.ofTypeNumber}"
value="#{filledQuestionnaire.answersCollection[status.index].answerValue}">
<f:validateLongRange minimum="#{question.minimumValue}"
maximum="#{question.maximumValue}"/>
</h:inputText>
..
</ui:repeat>
我輸出#{question.minimumValue}
和#{question.maximumValue}
,並且他們有正確的價值觀我的問題。
另請參閱:http://www.ninthavenue.com.au/jsf-c-foreach-vs-ui-repeat – kolossus