我正在使用< ui構建表格:重複>標記,其長度爲動態。每行有一個< h:inputText >字段。提交表單時,它將表單中的值設置爲散列表。除驗證外,這一切都很好。我需要使用「for」屬性告訴< h:消息>它屬於哪個輸入。我試圖根據用於創建該行的項目的名稱來創建每行唯一的ID。但< H:當我提交了無效的輸入消息>標籤保持爲空,而我得到下面的輸出上的服務器日誌(JBoss的7.1):JSF2 <h:message>無法找到ID爲
[javax.enterprise.resource.webcontainer.jsf.renderkit]
Unable to find component with ID nTAS in view.
這裏是XHTML:
<ui:repeat var="item" ...>
...
<h:inputText value="#{bean.chosenItems[item.name]}" id="n#{item.name}" >
<f:validateLongRange minimum="0" maximum="10" />
</h:inputText>
<h:message for="n#{item.name}" />
...
</ui:repeat>
爲了至少獲得某種瀏覽器的錯誤信息,我也添加了這個靠近我的頁面的頂部,它的工作原理:
<h:messages styleClass="error" />
它會顯示這樣的信息:
j_idt13:j_idt17:1:n: Validation Error: Value is not of the correct type.
而且那種問題的節目部分,因爲ID是在消息的開頭那個陌生的代碼,並將其與「N」開頭,但不包含該項目的名稱。如果我在瀏覽器中查看源代碼,則ID實際上是:id="j_idt13:j_idt17:1:nTAS"
如果我查看錶以外的其他組件,它們也有明顯由JSF生成的隱蔽ID。
什麼是真正奇怪的是,當我輸入「ASDF」第二次,並重新提交表單,然後調用bean上的操作方法,而不是在驗證階段再次失敗!怎麼可能?!
感謝您的任何提示, 約翰
完美,而固定的第二個問題是,形式不被後續的提交驗證。謝謝! – 2012-03-08 21:27:22
很高興聽到它的作品! – 2012-03-08 21:31:59