2013-12-20 35 views
0

我已經閱讀了Alfresco文檔以及wiki,但仍然沒有清楚:在Alfresco Share表單中爲特定字段定義自定義驗證處理程序的正確方法是什麼?Alfresco共享表單:如何爲非必填字段定義自定義驗證處理程序?

問題是我在論壇中發現的方法總是覆蓋了MANDATORY類型,所以如果字段設置爲mandatory =「true」,則驗證處理程序只會被調用。

<config evaluator="aspect" condition="my:aspect"> 
     <forms> 
     <form> 
      <field-visibility> 
       <show id="my:property" /> 
      </field-visibility> 
      <appearance> 
       <field id="my:property" mandatory="true"> 
        <constraint-handlers> 
         <constraint type="MANDATORY" validation-handler="Alfresco.forms.validation.myValidator" event="keyup" /> 
        </constraint-handlers> 
       </field> 
      </appearance> 
     </form> 
    </forms> 
</config> 

但如何定義自定義驗證處理程序爲一個字段是不是強制性的?否則,這是選擇/重寫的正確類型?我嘗試使用type="LENGTH",但是當用戶在表單域和域中輸入內容時,這也不會被調用。

更新:

我也試着從下面的評論Andreas的建議,但是,驗證處理程序不會被調用。這是我的XML和功能:

<field id="my:field" mandatory="false"> 
    <constraint-handlers> 
     <constraint message-id="mandatory.field.empty.suffix" event="keyup,propertychange" validation-handler="Alfresco.forms.validation.metahead"/> 
    </constraint-handlers>      
</field> 

驗證處理函數:

Alfresco.forms.validation.metahead = function FormEditMetadataWebWorkflowExt_metahead(field, args, event, form, silent, message) 
    { 
    console.log('metahead!'); 
    return false; 
    } 

上述驗證功能不被調用在任何時候,無論是當我改變我的字段的值或任何其他形式的領域。

接下來,我試圖手動註冊驗證處理程序,因爲我在露天地方論壇閱讀:

YAHOO.Bubbling.fire("registerValidationHandler",{fieldId: 'fieldIdOfMyField',handler: Alfresco.forms.validation.metahead, when: "onkeyup"}); 

但這隻能部分。它確實調用我的驗證處理函數只有當任何其他(強制性)表單字段更改(這是正常的,因爲整個表單驗證發生時,一個字段更改),但而不是當我更改我自己的字段「my:field」)

(還有,爲什麼需要驗證處理程序來手動註冊,我會覺得這是在XML中的約束配置是。)

+0

在4.2.e上,它適用於我的w/o類型屬性和w/o「驗證處理程序」的附加註冊(激發事件)。您正在使用哪個版本的Alfresco Share? –

+0

我目前在4.0.2.9 Enterprise上,這是該項目中的生產系統。我會試用更新的版本。 –

回答

0

只是省略type屬性,因此它讀取:

<constraint validation-handler="YourCompany.forms.validation.yourValidator" event="keyup" /> 

如果你的函數

YourCompany.forms.validation.yourValidator = function (field, args, event, form, silent, message) 
{...} 

返回false,消息從消息resou顯示解析爲YourCompany.forms.validation.yourValidator.message值rces(默認映射)。

+0

謝謝,但這也不起作用/觸發驗證方法,請參閱我更新的問題。 –