groovy在grails上的新特性,并且如果始终需要解决方案,可能会遇到一些定制问题。gsp页面,带有从之前选择的select中获得的未封闭的GSP表达式
我想创建两个使用ajax选择,一个填充基于另一个的信息。我在下面的例子是http://www.grails.org/AJAX-Driven+SELECTs+in+GSP。我也在使用脚手架,所以我不得不使用install-templates命令来获取操作gsp文件的视图。从模板中微调一下,我有一个工作的创建视图,用于构建我的选择。但是,输入查询这些选择在一个错误的结果教程指定我不能工作了
Stack trace as below :
| Error 2013-01-12 16:11:46,582 [http-bio-8080-exec-3] ERROR errors.GrailsExceptionResolver - GrailsTagException occurred when processing request: [GET] /TimeTracker2/time/create
Unclosed GSP expression. Stacktrace follows:
Message: Error initializing GroovyPageView
Line | Method
->> 186 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 1110 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 603 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 722 | run . . . in java.lang.Thread
Caused by GrailsTagException: Unclosed GSP expression
->> 33 | doFilter in \grails-app\views\time\create.gsp
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
我GSP低于你可以看到所有的表情都关闭......建议吗?
<head>
<meta name="layout" content="main">
<g:set var="entityName" value="\${domainClass.propertyName}" />
<title>Create Time</title>
</head>
<body>
<a href="#create-{domainClass.propertyName}" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content…"/></a>
<div class="nav" role="navigation">
<ul>
<li><a class="home" href="/TimeTracker2"><g:message code="default.home.label"/></a></li>
<li><g:link class="list" action="list"><!--g:message code="default.list.label" args="[entityName]" /-->Time List</g:link></li>
</ul>
</div>
<div id="create-{domainClass.propertyName}" class="content scaffold-create" role="main">
<h1><!--g:message code="default.create.label" args="[entityName]" /-->Create Time</h1>
<g:if test="${flash.message}">
<div class="message" role="status">${flash.message}</div>
</g:if>
<g:hasErrors bean="\${propertyName}">
<ul class="errors" role="alert">
<g:eachError bean="\${propertyName}" var="error">
<li <g:if test="\${error in org.springframework.validation.FieldError}">data-field-id="\${error.field}"</g:if>><g:message error="\${error}"/></li>
</g:eachError>
</ul>
</g:hasErrors>
<g:form action="save" method="post" enctype="multipart/form-data" >
<fieldset class="form">
<g:render template="form"/>
<g:select
optionKey="id" optionValue="Project" name="project.name" id="project.name" from="${Project.list()}"
onchange="${remoteFunction(
controller:'project',
action:'ajaxGetClassifications',
params:'\\'id='\\' + escape(this.value)',
onComplete:'updateClassification(e)')}"
></g:select>
</fieldset>
<fieldset class="buttons">
<g:submitButton name="create" class="save" value="Create" />
</fieldset>
</g:form>
</div>
</body>
把所有的选择放在一行上 –
另外,如果你使用的是jQuery,它将是'updateClassification(data)' –