2013-04-17 29 views
0

我有掛毯5.3.6一個很大的問題..如何在具有區域屬性的表單中使用表單驗證?

我有暗示這種形式的IDS不可能」修改自定義簡單混入一種形式:/

所以我有這樣的:

<form t:type="form" t:id="formId" t:mixins="aMixins" t:zone="zoneID"> 
    <t:errors/> 
    <input t:type="TextField"/> 
    <a t:type="LinkSubmit" t:id="linkId"/> 
</form> 

<t:zone t:id="zoneID"> 
     Something.... 
</t:type> 

當我使用區域窗體屬性時,不顯示驗證錯誤,我如何使驗證錯誤顯示錯誤而不將窗體包含到區域中?

我不能將這個表單包含到一個區域中,因爲當我的mixin被初始化時,它會在一些DOM元素上放置一些監聽器,當我提交表單時,表單會被重新加載(因爲區域)並重新加載mixin在新的DOM元素上添加了更多的監聽器,並且在提交事件後,會觸發相應監聽器捕獲的事件,但是一些監聽器會鏈接到不相關的元素,並且js會崩潰。

非常感謝您的回覆

+0

如果您使用固定ID作爲表單區域參數,您還應該爲區域定義固定ID:'' – sody

+0

它不能解決我的問題:/ – BlackMario

回答

0

1。

我有一個自定義的簡單混入一種形式,它意味着形式的IDS 想不出」進行修改

這是不是暗示。也許,這是你的要求?

如果不是那麼插入你的mixin到ajax渲染你需要使mixin更靈活一點。

在YourMixin類:

@InjectContainer 
private ClientElement element; 

void afterRender() { 

    String elementId = element.getClientId(); 

    JSONObject spec = new JSONObject(); 
    spec.put("elementId", elementId); 

    jsSupport.addScript("new MixinHandler(%s)", spec.toString()); 
} 

這只是一個提示,看看自動完成實現(類,JavaScript)的一個完整樣本。

2。

當我使用區域的形式屬性,驗證工作不

這聽起來很令人懷疑。我想驗證錯誤是不可見的,因爲你不更新的形式本身及其<t:errors/>標籤。

如果將斷點設置爲頁面中窗體的FAILURE和SUCCESS事件處理程序(請參閱org.apache.tapestry5.EventConstants),則可以驗證此操作。

+0

這是真正的問題對不起我是法國人:/驗證工程,但我不能渲染錯誤組件,因爲只有區域刷新,我不知道是否使混合更靈活可以解決我的問題,因爲當窗體加載,mixin初始化自己並綁定一些javascript事件,當我提交表單時,mixin再次初始化自己並綁定相同的事件,並且在提交成功後,事件被2個偵聽器觸發並且被其他監聽器鏈接到一個不存在的元素,我刷新我的第一篇文章,以精確我的問題 – BlackMario

+0

我想最好是包含更新,而不是觸及初始p因爲我的回答聽起來毫無關聯嘗試查看tapestry5 javascript以發現在發送Ajax請求之前是否有一些JavaScript事件觸發 - 您可以嘗試取消註冊將會過時的當前偵聽器。 – Vitaly

+0

我想是這樣的:'Tapestry.FORM_PROCESS_SUBMIT_EVENT:「tapestry:formprocesssubmit」' – Vitaly

相關問題