在我的 xpage 上,我為 inputtext 控件定義了一個驗(yàn)證器:<xp:inputText id="cv" disabled="#{!employeeBean.employee.editable}" value="1" validator="#{employeeValidator.valAttachments}"> <xp:this.required><![CDATA[#{javascript:return submittedBy("btnSendToHR")}]]></xp:this.required> <xp:this.validators> <xp:validateRequired message="No CV added"> </xp:validateRequired> </xp:this.validators></xp:inputText>驗(yàn)證器非?;A(chǔ),看起來有點(diǎn)如下:public void valAttachments(FacesContext facesContext, UIComponent component, Object value) { // my business logic here String msg = null; msg = "//collecting string from properties file"; FacesMessage message = new FacesMessage(msg); throw new ValidatorException(message); }現(xiàn)在我試圖讓我的驗(yàn)證器以觸發(fā)提交的按鈕為條件 (submittedBy("btnSendToHR"))(我在這篇博客文章中找到了靈感http://dontpanic82.blogspot.com/2010/03/xpages-制作驗(yàn)證行為.html):<xp:this.validator><![CDATA[#{javascript://emploteeValidator.valAttachmentsif (true == submittedBy("btnSendToHR")){ importPackage(se.bank.app.test); var mv = new se.bank.app.test.EmployeeValidator(); mv.valAttachments(facesContext, getComponent("cv"),"0" );}}]]></xp:this.validator>我看到該方法被調(diào)用(例如,當(dāng)我在方法中包含 System.out.println() 時)。一個例子:執(zhí)行 JavaScript 動作表達(dá)式時出錯腳本解釋器錯誤,行 = 5,列 = 12:調(diào)用方法時出錯來自 valAttachments 的 Java 類“se.bank.app.test.EmployeeValidator”上的“valAttachments(com.ibm.xsp.domino.context.DominoFacesContext, com.ibm.xsp.component.xp.XspInputText, string)”:測試驗(yàn)證 cv , 提交值=0有人可以解釋我如何根據(jù)提交 Id(一個按鈕)制作驗(yàn)證器?
2 回答

繁星淼淼
TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個贊
也許你正在嘗試比你需要的更復(fù)雜的東西。驗(yàn)證器已經(jīng)可以訪問觸發(fā)驗(yàn)證的組件。SeeUIComponent component
是參數(shù)之一。那可能是 xp:eventHandler 但從getParent()
那里向上導(dǎo)航。這可能會讓您獲得所需的一切。
如果要避免在驗(yàn)證器中編碼,請this.getParent()
在 eventHandler 的 SSJS 中獲取組件。例如,您可以傳遞一個參數(shù)以根據(jù) ID 設(shè)置有效。
添加回答
舉報(bào)
0/150
提交
取消