2012-02-07 46 views

Trả lời

8

Bạn không thể xác định các phương pháp trong GSP. Nhưng bạn có thể có chức năng ẩn danh nếu bạn muốn: D

Ví dụ:

<% 
    def prettify = { "***$it***" } 
%> 
<h1>${prettify(someText)}</h1> 

Mặc dù ví dụ này không làm quá nhiều ý nghĩa, như định dạng nhỏ có thể được inlined. Đối với bất kỳ loại logic bổ sung nào cho các chế độ xem, tôi sẽ theo dõi OverZealous recommendation và sử dụng thẻ taglib.

+3

Tôi đồng ý rằng trong hầu hết các trường hợp, Taglib (hoặc một mẫu con được gọi là 'g: render') là các giải pháp đúng. Nhưng đôi khi có một chút logic lặp đi lặp lại, thật tốt khi viết chỉ một lần trong GSP, nhưng không đảm bảo việc quảng cáo đó thành một tệp bên ngoài. Trong những trường hợp đó, tôi muốn viết nó như sau: ' 'Lưu ý các curlies kép' {{}} 'xác định một đóng. Sau đó, bạn sử dụng nó như một hàm thông thường: '$ {greet (" Sam ")}' – Tobia

6

No. Chỉ cần không làm điều này. Điều này hoàn toàn trái với mục đích của GSP. GSP được thiết kế để xử lý thông tin đánh dấu trực quan, không phải logic lập trình. Chức năng ném trực tiếp trong GSP của bạn sẽ dẫn đến một mớ hỗn độn không thể duy trì được.

Tại sao bạn không đặt thẻ trong thẻ? Đây là những gì các thẻ cho; không quan trọng là nó chỉ được sử dụng trong GSP của bạn. GSP chỉ nên chứa logic hiển thị đơn giản và nội dung đầu ra. Mã có thể sử dụng lại phải luôn được chứa trong thẻ taglib hoặc trong một số loại điều khiển hoặc dịch vụ cho logic phức tạp.

Bạn không đề cập đến khung bạn đang sử dụng, chẳng hạn như Gaelyk hoặc Grails. (Trừ khi bạn đang sử dụng Groovy thuần túy trên máy chủ vì một số lý do.) Không có cách nào thiết thực để đề xuất giải pháp tốt ở đây mà không có thêm thông tin.

Nếu bạn đang sử dụng thẻ kiểu JSP (<% %>) trong GSP của mình, có thể bạn đang làm sai.

Nếu bạn muốn có câu trả lời hay hơn, vui lòng cung cấp thông tin chi tiết hơn về môi trường lập trình, mục tiêu là gì và tại sao (vì lý do bạn không muốn sử dụng thẻ tag).

+0

Giả sử tôi có mẫu cho hàng. Mẫu này không thay đổi bên ngoài GSP này. Có thể khai báo mẫu bên trong GSP không? –

+0

Tôi sẽ sử dụng ' MẪU ĐÂY Ở đây' – fixitagain

+0

có thể hữu ích cho một mẫu bên trong nhỏ, giống như một hệ thống phân cấp. – Guillaume

Các vấn đề liên quan