我有一系列文檔的重複控制,並且在同一個面板之下但在重複控制之外,我有另一個新的綁定文檔。新文檔具有空白字段,但是在提交新文檔時,這些字段具有需要內容的驗證。在另一個數據源上更改編輯模式時,驗證器綁定到一個數據源
這是有效的。
我在重複控制的重複輸入面板上添加了一個「編輯」按鈕。操作是彈出該條目的ento編輯模式。
工作原理 - 我可以確認重複中的各行可以獨立地在編輯模式之間切換,並且在切換時,下面的新文檔不會切換。它是孤立的。
然而,
如果我在新的文檔有驗證碼,它會觸發(其中未通過驗證)上即使我切換在重複其他裝訂文檔的一個新的文檔。
我試圖確保該按鈕設置爲部分刷新,並且只設置爲刷新重複中的單個輸入面板,並且試圖確保按鈕僅綁定到正確的文檔。
它似乎只是有問題的驗證代碼,因爲如果我禁用它,所有切換都可以正常工作,並且新文檔區域不會在其目標數據庫中創建空的新文檔。
顯然我錯過了一些東西。有什麼想法嗎?
如果你想要的代碼,我已經貼了剝離,消毒,並註明版本儘可能短,我可以把它無需去除這裏的相關位:
<xp:repeat repeatControls="false" var="devices" id="ExistingDevicesList" rendered="true">
<xp:this.value><![CDATA[#{javascript: /* Some script that populates the repeat */ }]]>
</xp:this.value>
<xp:panel id="IndividualDevice"> <!-- ************ start of the individual device panel -->
<xp:this.data>
<xp:dominoDocument var="devDocument"
databaseName=" xxxxx.nsf" action="openDocument"
formName="device"
documentId="#{javascript:devices.getDocument().getUniversalID();}"
ignoreRequestParams="true" />
</xp:this.data>
<!-- ******************* The Edit Button ****************** -->
<xp:button value="Edit" id="button1">
<xp:this.binding><![CDATA[#{javascript:
var IndividualDevice:com.ibm.xsp.component.UIPanelEx = getComponent("IndividualDevice");
IndividualDevice}]]>
</xp:this.binding>
<xp:eventHandler event="onclick"
submit="true" refreshMode="partial"
refreshId="IndividualDevice">
<xp:this.action>
<xp:changeDocumentMode mode="edit" var="devDocument">
</xp:changeDocumentMode>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<!-- ******************************************************* -->
<xp:inputText id="inputText4" value="#{devDocument.field1}" />
<xp:inputText id="inputText5" value="#{devDocument.field2}" />
</xp:panel>
</xp:repeat>
<!-- ********** below is a field and button bound to the NewDevice Document -->
<xp:inputText id="inputText3" value="#{NewDevice.field1}"
style="width:371.0px" required="false">
<xp:this.validators>
<xp:validateRequired
message="You must enter a value." />
</xp:this.validators>
</xp:inputText>
<xp:button value="submit new device" id="newDevButton">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" immediate="false" save="true"
refreshId="NewDevicePanel" />
</xp:button>
<!-- ************************************************************************ -->
我會在這裏回答我的問題!是啊! 我穿過這裏就直接回答出來[TOMMY VALAND的博客(http://dontpanic82.blogspot.com/2010/03/xpages-making-validation-behave.html) 簡短的答案是,確認是沒有正確地綁定到與特定文檔相關的事件。也就是說,在我看來,主要和愚蠢的缺陷。 湯米描述了一個看起來不錯的工作。 – 2012-03-02 17:54:55
從我所知道的來看,湯米的方法對我不起作用。它開始工作正常,但一旦驗證失敗,在前端客戶端設置標誌,該字段是無效的並且是必需的,並且不會點擊其他模式按鈕來停止客戶端驗證的發生。 盡我所知,您還必須編寫一些基於客戶端事件的代碼,以將客戶端字段中的所需標籤剝離。 我驚呆了IBM未能正確地綁定驗證事件。 – 2012-03-02 19:24:34