2014-01-31 1 views
3

Я использую grails 2.3.4Исключение отсутствующих R: layoutResources тег

Однако, когда я начинаю мое заявление я получаю:

|Server running. Browse to http://localhost:8080/testApplication 
....[/testApplication].[gsp] Servlet.service() for servlet [gsp] in context w 
ith path [/testApplication] threw exception 
java.lang.RuntimeException: It looks like you are missing some calls to the r:la 
youtResources tag. After rendering your page the following have not been rendere 
d: [defer] 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 

     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct 
orAccessorImpl.java:57) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC 
onstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
     at org.springsource.loaded.ri.ReflectiveInterceptor.jlrConstructorNewIns 
tance(ReflectiveInterceptor.java:986) 
     at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstru 
ctor.java:77) 
     at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteN 
oUnwrapNoCoerce.callConstructor(ConstructorSite.java:102) 
     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstru 
ctor(CallSiteArray.java:57) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor 
(AbstractCallSite.java:182) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor 
(AbstractCallSite.java:190) 
     at org.grails.plugin.resource.DevModeSanityFilter.doFilter(DevModeSanity 
Filter.groovy:54) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 
icationFilterChain.java:243) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 
ilterChain.java:210) 
     at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doF 
ilterInternal(GrailsWebRequestFilter.java:69) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR 
equestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 
icationFilterChain.java:243) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 
ilterChain.java:210) 
     at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilte 
rInternal(HiddenHttpMethodFilter.java:67) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR 
equestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 
icationFilterChain.java:243) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 
ilterChain.java:210) 
     at org.springframework.web.filter.CharacterEncodingFilter.doFilterIntern 
al(CharacterEncodingFilter.java:88) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR 
equestFilter.java:107) 
     at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(D 
elegatingFilterProxy.java:343) 
     at org.springframework.web.filter.DelegatingFilterProxy.doFilter(Delegat 
ingFilterProxy.java:260) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 
icationFilterChain.java:243) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 
ilterChain.java:210) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV 
alve.java:222) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV 
alve.java:123) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j 
ava:171) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j 
ava:100) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal 
ve.java:118) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav 
a:408) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp 
11Processor.java:1041) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:603) 
     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoin 
t.java:310) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1110) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:603) 
     at java.lang.Thread.run(Thread.java:722) 

Мой index.gsp файл выглядит следующим образом:

<html ng-app> 
<head> 
<meta name="layout" content="main" /> 
<title>Title Page</title> 

<!-- here we are loading angularjs --> 

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js"></script> 

    <!-- other way: <script src="" $ {resource(dir: 'js/lib', file: 'file.js')}"></script> --> 
<!-- <r:require module="angular" /> 
<r:layoutResources /> 
--> 
</head> 
<body> 
    <div> 
     <div> 
      <label>Name:</label> 
      <input type="text" ng-model="yourName" placeholder="Enter a name here"> 
      <hr> 
      <h1>Hello {{yourName}}!</h1> 
     </div> 
    </div> 
</body> 
</html> 

Как вам может видеть, что тег прокомментирован. Так почему я получаю это и как исправить этот длинный expeception?

Я действительно ценю ваш ответ!

ответ

8

<r:layoutResources/> должен появиться дважды на вашей странице (или более обычно в макете GSP) - один раз как раз перед </head>, чтобы сделать ресурсы с «головы» диспозиции и снова как раз перед </body> оказать «отложить» из них. Это недостающее второе появление, о котором жалуется сообщение об ошибке, первое не действительно «закомментировано» (оно находится внутри комментария HTML, поэтому оно все равно будет отображаться, но его результат будет закомментирован в полученном HTML).

Так что вам нужно «расколоть» первое вхождение, а также добавить второе, или убедиться, что ваша страница использует макет, который содержит теги <r:layoutResources/> в нужных местах.

+2

Thx много для вашего ответа! Есть ли реальная разница, если я использую ''? – user2051347

+2

@ user2051347 вам не нужно - по умолчанию первое вхождение тега будет выполнять «главные» ресурсы, а второе будет выполнять «отложенные». –