Tôi hiểu vấn đề của bạn. Nếu bạn muốn có Intellisense trên var bạn nhận được từ một taglib, điều duy nhất bạn có thể có là này (nó hơi dư thừa)
Ví dụ: nếu bạn có một TagLib với không gian tên myTaglib:
cuộc gọi đầu tiên hoạt động của taglib của bạn để thiết lập giá trị của một var:
<myTaglib:person var="currentUserFromTaglib" />
Trường hợp person
thẻ trong myTaglib
chỉ dành cho mục đích này:
def person = { attrs ->
this.pageScope."$attrs.var" = new Person(name:'Giuseppe', surname:'Iacobucci')
}
Sau đó, bạn cần phải viết:
<g:set var="currentUser" value="${currentUserFromTaglib as Person}"/>
Và bao gồm trong bạn GSP:
<%@ page import="your.package.Person" %>
Sau đó, trong GSP currentUser
được công nhận là loại Person
.
Trong một bộ điều khiển, bạn chỉ cần gọi myTaglib
và đúc kết quả như sau:
def myvar = myTaglib.person() as Person
Rõ ràng nếu bạn cần thêm một đối tượng phức tạp như tôi đọc từ bình luận của bạn, sau đó tạo ra một đối tượng giao diện người dùng đơn giản với tất cả thông tin bạn cần bên trong và thực hiện thủ thuật tương tự.
Nguồn
2014-11-25 09:09:01
'returnObjectForTags' có thể hoạt động nhưng tùy thuộc vào những gì bạn đang thực sự cố gắng làm điều đó có thể là một thẻ lib là điều sai hoàn toàn ở đây. Bạn có thể mô tả bạn đang làm gì với thẻ lib không? –
Tôi đã cố gắng sử dụng thẻ returnObjectForTags với thẻ - nhưng không thể hoạt động. Có lẽ một dịch vụ là một lựa chọn tốt hơn. Đây là taglib: – mikek
Nó không thực sự rõ ràng những gì bạn đang cố gắng làm nhưng không có gì trong mô tả của bạn cho thấy rằng một thẻ lib có ý nghĩa. –