2009-06-19 36 views
15

Tôi đang cố gắng sử dụng cuộc gọi taglib có các tham số thuộc tính, nhưng cũng có nội dung bên trong thẻ mà thẻ taglib liên kết sử dụng. Tôi không thể tìm thấy thuộc tính để chuyển vào cuộc gọi g.link() để nó hiển thị văn bản của liên kết. Tôi đã thử 'body' và 'link' và 'text' và 'linkText' rồi - không có tác phẩm nào trong số đó.Sử dụng taglib liên kết Grails bên ngoài GSP

Tôi đang mong đợi để có thể gọi

g.link(action:"foo", controller:"bar", _____:"text of the link here")

nhưng không biết những gì để đưa vào _____

Trả lời

4

Không có tham số để vượt qua trong (cho tốt hơn hoặc tồi tệ hơn).

Để nhận văn bản trong liên kết, bạn chuyển văn bản đó dưới dạng đóng.

g.link(action:"foo", controller:"bar") { "text of the link here" }
25

Thông thường, bạn làm điều đó như thế này:

g.link(action:"foo", controller:"bar", "text of the link here") 

Các liên kết văn bản không cần phải là tham số cuối cùng, nó có thể xuất hiện ở bất cứ đâu:

g.link("text of the link here", action:"foo", controller:"bar") 

.

sử dụng cho phép đóng cửa:

Thay vì chuỗi bạn có thể sử dụng một kết thúc mà trả về một chuỗi:

g.link(action:"foo", controller:"bar", {"text of the link here"}) 

Và, như với bất kỳ đóng cửa groovy mà là tham số cuối cùng cho một cuộc gọi phương pháp, bạn có thể đặt nó sau khi ngoặc đóng cửa:

g.link(action:"foo", controller:"bar") {"text of the link here"} 
+1

Tài liệu không tham chiếu điều này chút nào, nhưng hiển thị đóng. Tài liệu có thể cần cập nhật. – user111544

+1

Tôi đã cập nhật câu trả lời để giải thích điều đó. – Zim

0

vì lợi ích của sự hoàn chỉnh, vì nó không được đề cập trong các tài liệu: nếu bạn đang gọi các thẻ (như các cuộc gọi metod) bên trong taglib của riêng bạn, bạn có thể sử dụng đóng để xuất nội dung khác (sử dụng out <<) bên trong thẻ bên ngoài. Ví dụ:

out << g.form(method: "post", controller: "login") { 
    out << "Name: " << g.textField(name: "name") << "<br>" 
    out << "Password: " << g.passwordField(name: "password") << "<br>" 
    out << g.submitButton(name: "login") 
} 
Các vấn đề liên quan