2015-12-22 55 views
1

我發現了一個代碼片段看起來像這樣GRAILS:.gsp文件如何分析?

createReportProfile = function() { 

var url = "<%= createLink(controller: 'configCashFlowReport', action: 'saveCreate')%>"; 
var data = $("form[id=addReportConfigForm]").serializeArray(); 
var doneFunction = function (data) { 
    $("#returnAddReportProfiletDiv").html(data); 
} 

ajaxGet(url, data, doneFunction, undefined); 

return false; } 

請注意這條線

var url = "<%= createLink(controller: 'configCashFlowReport', action: 'saveCreate')%>"; 

CreateReportProfile功能是內部腳本標籤,並保存在report.gsp。顯然,代碼是使用JavaScript編寫的,但其中有一個grails代碼(createLink)。

1)grails如何檢測到它應該評估createLInk標記?由於<%= %> ??但它在雙引號內。 grails如何區分一個簡單的字符串和一個應該被評估的字符串?

2).gsp文件是如何解析的?

+1

看看這裏http://stackoverflow.com/a/2314695/755637。您可以設置grails.views.gsp.keepgenerateddir ='/ some/existing/directory',當您的應用程序編譯gsps時 - 將轉儲編譯後的代碼供您查看。適合調試。這種事情的原因可能在於編解碼器。看看這裏更好地理解它。 https://jira.grails.org/browse/GPCKEDITOR-40?focusedCommentId=81082&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-81082 – Vahid

回答

3

爲什麼你認爲這樣的代碼是難以解析的東西?對於GSP而言,無論它具有什麼內容,html,js或css或其他任何內容都無關緊要。所有這些都是文字。除了GSP標籤/塊本身外,沒有與其相關的語義。這些塊外的其他所有內容都是按原樣傳遞的字符。您可以使用<g:createLink />語法代替${createLink}。我認爲使用<%= createLink %>只是因爲它更容易閱讀Javascript代碼,並且大多數IDE將正確突出顯示它沒有任何額外的努力。