2015-12-22 115 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将正确突出显示它没有任何额外的努力。