2012-05-15 15 views
7

Tôi đã viết một taglib thực hiện một số logic và ám một số dữ liệu dệt vào HTML. Khi tôi sử dụng taglib trong một khung nhìn, taglib mong muốn tìm mẫu trong một thư mục con tương đối của khung nhìn. Có cách nào mà tôi có thể làm cho các taglib nhận mẫu từ một thư mục phổ biến như bố trí/thư mục trong xem. Đây là cách mã taglib trông:Grails: Viết một taglib trong đó sử dụng một mẫu để hiển thị dữ liệu và giữ cho nó điều khiển bất khả tri

class IconifiedTextTagLib { 

def renderIconText = { attrs, body -> 
       //some processing logic to generate the modelMap 
     out << render(template:"taglibTemplates/iconText", model:modelMap) 
    } 
} 

Khi tôi sử dụng thẻ <g:renderIconText /> trong nói một bộ điều khiển tên A, sau đó nó sẽ yêu cầu taglibTemplates/iconText có mặt trong views/A/ thư mục. Đây là một vấn đề bởi vì tôi cần để có thể sử dụng nó từ nhiều bộ điều khiển. Tôi cần một cách để đặt các mẫu trong một thư mục như bố cục/để nó có thể được sử dụng trong tất cả các khung nhìn. Bất kỳ suy nghĩ về cách tôi có thể làm điều này?

Trả lời

9

Đặt mẫu vào views/taglibTemplates/ và thử:

out << render(template:"/taglibTemplates/iconText", model:modelMap) 

hoặc vào 'views/A /', và

out << render(template:"/A/iconText", model:modelMap) 
+2

Hóa ra hàng đầu/bị thiếu. Cảm ơn bạn đã chỉ ra điều đó. –

1

trên grails 2.3.8 tôi đã phải sử dụng như vậy

đảm bảo tên tệp mẫu bắt đầu bằng dấu gạch dưới

_mytemplate.gsp 

trong thư viện thẻ của bạn lớp

out << g.render(template: '/taglibTemplates/mytemplate') 
Các vấn đề liên quan