Grails Resources Plugin 및 AJAX가 javascript를 로드했습니다.
grils 1.3.7 애플리케이션에 리소스 플러그인을 추가했는데 비동기식으로 로드되는 javascript를 제외하고는 모두 정상적으로 작동합니다.
그래서 만약 내가 포함된 템플릿을 가지고 있다면,
<r:script>
// javascript here
</r:script>
그리고 js 코드가 실행되지 않는 ajax를 통해 로드하면 다음 오류가 발생합니다.
r:layoutResources 태그에 대한 일부 호출이 누락된 것 같습니다.
페이지가 이미 렌더링되었으며 새로 추가된 r:script js 코드를 처리할 r:layoutResources가 없기 때문에 의미가 있습니다.
내가 찾은 유일한 해결책은 추가하는 것입니다.render r.layoutResources(disposition:"defer")
사후에render(template:...)
컨텐츠를 비동기적으로 렌더링하는 컨트롤러 작업에서 사용할 수 있습니다.
더 명확한 해결책이 있습니까?
AJAX 응답을 위한 전용 레이아웃을 구축하는 것이 더 좋습니다.
<g:layoutBody/>
<r:layoutResources disposition="defer"/>
Grails 2.0을 사용하는 경우 렌더링 방법에서 레이아웃을 지정할 수 있습니다.render template: "...", layout: "ajax"
) 또는 규칙에 따라 레이아웃을 사용합니다.
내가 생각하는 더 나은 옵션은 템플릿 조각에 user:script를 사용하지 않는 것입니다.그냥 일반 스크립트 태그를 사용합니다.layoutResources 항목이 필요하지 않은 경우 이러한 fragment 내의 Resources에서 아무런 이점도 얻을 수 없습니다.
때로는 고전적인 방법이 최고입니다.
저는 항상 Peter Ledbrook 응답을 따르지만, 레이아웃을 사용하는 대신 템플릿을 사용하여 기본 레이아웃에서 렌더링할 내용을 자동화합니다.내 main.gsp는 다음과 같습니다.
<!DOCTYPE html>
<g:if test="${request.xhr}">
<g:render template="/layouts/content" />
</g:if>
<g:else>
<html>
... <!-- Main layout stuff: application resources, logo, main menu, etc -->
<div id="content"> <!-- Somewhere in the body -->
<g:render template="/layouts/content" />
</div>
</html>
</g:else>
그런 다음 _content.gsp 템플릿은 다음과 같습니다.
<g:layoutBody />
<r:layoutResources disposition="defer"/>
<!-- Ajaxify your relative links with the framework of your choice -->
그러면 모든 관련 링크와 양식을 자동으로 Ajax화할 수 있으며 Ajax 응답이 항상 content div 내부에 있기 때문에 컨트롤러에서 작업이 필요하지 않습니다(다른 응답 없음).
언급URL : https://stackoverflow.com/questions/8736277/grails-resources-plugin-and-ajax-loaded-javascript
'programing' 카테고리의 다른 글
조건이 충족되면 A행 선택, 그렇지 않으면 각 그룹에 대해 B행 선택 (0) | 2023.08.19 |
---|---|
추상 클래스 및 하위에 생성자 주입 (0) | 2023.08.19 |
리프빈에 메소드를 호출한 결과를 봄부터 주입하는 것이 가능합니까? (0) | 2023.08.19 |
JQuery.trigger('클릭')를 가져오는 방법; 마우스를 시작하려면 다음을 클릭합니다. (0) | 2023.08.19 |
스프링 핸들러인터셉터 대 서블릿 필터 (0) | 2023.08.19 |