2015-05-08 78 views
0

我正在開發一個Grails 2.4.4項目。我有我的gsp頁下面的代碼(模板)調用調用另一個模板的子模板:main gsp page > gsp template > yet another gsp templateGSP模板無法從另一個模板中檢索傳遞的模板

main.gsp

... 
<g:render template="/details" model="[param_one:'param_one', param_two:'param_two']" /> 
... 

_details.gsp

... 
<p>On details: ${param_one}</p> 
<g:render template="/segments/segment-one" model="[param_two:'${param_two}']" /> 
... 

_segment-one.gsp

<p>Segment One: ${param_two}</p> 

現在,當它呈現的整個頁面,那隻能說明是這樣的:

On details: param_one 
Segment One: ${param_two} 

爲什麼_segment-one.gsp無法呈現通過param_two?是否允許template從另一個template呈現?多謝你們。

+0

如果你傳遞'model =「[param_two:param_two]」'會發生什麼? –

+0

它告訴我有'unescaped'字符。 – Gideon

回答

0

我固定_segment-one.gsp代碼通過添加params關鍵字:

<p>Segment One: ${params.param_two}</p> 
        ^^^^^^ 
1

首先,你都不允許有GSP頁面調用無限期調用模板的模板。當您調用模板時,您實際上是在運行時將模板的代碼包含到包含頁面中的;換句話說,模板是調用者的一部分,默認情況下它將訪問調用者可見的所有對象。所有你需要做的就是你的第二個納入更改爲:

<g:render template="/segments/segment-one" /> 

現在,模板段一會已經進入param_one和param_two。你只需要再次使用你的模型標籤,如果你正在傳遞你在本地模板(或gsp)中創建的新東西。

+0

'$ {param_two}'不起作用,所以我嘗試使用'$ {params.param_two}',那麼它現在可以工作。我會嘗試你的解決方案,如果它也可以。 – Gideon

+1

當然,你必須首先處理你的錯字:-)。我建議的作品我只是試過了。 – mohsenmadi

相關問題