2011-10-22 58 views
2

我想傳遞一個字段的名稱作爲參數傳遞給custom Play! framework tag遊戲框架:參數傳遞到自定義標籤

#{ifError ${_field}} 
    <ul class="err"> 
    #{errors ${_field}} 
     <li>${error}</li> 
    #{/errors} 
    </ul> 
    #{/ifError} 

但我得到的是個例外:

Template execution error (In /app/views/tags/errorList.html around line 1) 
Execution error occured in template /app/views/tags/errorList.html. Exception raised was MissingMethodException : No signature of method: Template_1008.$() is applicable for argument types: (Template_1008$_run_closure1_closure2) values: [[email protected]] Possible solutions: _(java.lang.String), is(java.lang.Object), run(), run(), any(), get(java.lang.String). 

play.exceptions.TemplateExecutionException: No signature of method: Template_1008.$() is applicable for argument types: (Template_1008$_run_closure1_closure2) values: [[email protected]] 

如何我可以將參數傳遞給我的標籤嗎?

解決方案

我稍微修改的「Codemwnci」的解決方案,並結束了與下面的模板代碼:

#{ifError _arg} 
    <ul class="err"> 
    #{errors _arg} 
    <li>${error}</li> 
    #{/errors} 
    </ul> 
#{/ifError} 

這個模板被稱爲像這樣#{errorList 'document.title' /}

回答

2

因爲你已經通過使用標籤語法#{..}一塊Groovy代碼裏面,你不需要使用表達式語法(即你不需要使用${..}語法)。

此外,errors標籤不帶任何輸入,而不是你需要的字段名稱傳遞到錯誤標籤。您可以檢查this documentationerror標籤的細節。

下面應該爲你

#{ifError _field} 
    <ul class="err"> 
    <li>#{error _field /}</li> 
    </ul> 
#{/ifError} 
+0

由於工作,它的工作原理!只要不使用單個參數'arg'的默認名稱,就必須將標記參數傳遞給標記。順便說一句[錯誤有一個可選的參數](http://www.playframework.org/documentation/1.2.3/tags#errors)。 – deamon

+0

所以它。這是有用的知道! – Codemwnci