Làm cách nào để khai báo hàm bên trong GSP? Tôi cần một cái gì đó như taglib nhưng tuyên bố bên trong GSP - nó không quan trọng bên ngoàiCó thể khai báo một hàm bên trong GSP không?
Trả lời
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.
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).
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? –
Tôi sẽ sử dụng '
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
- 1. Khai báo một hàm bên trong một hàm?
- 2. Có thể khai báo một phương thức Objective-C bên ngoài một lớp không?
- 3. Tôi có thể khai báo "sử dụng không gian tên" bên trong một lớp C++ không?
- 4. Bạn có nên khai báo các enums bên trong hoặc bên ngoài một lớp học không?
- 5. "..." có nghĩa là gì khi bên cạnh một tham số trong khai báo hàm go?
- 6. MATLAB "echo on" bên trong một hàm. Có thể không?
- 7. Việc sử dụng khai báo một biến tĩnh như extern bên trong một hàm là gì?
- 8. const trong khai báo hàm
- 9. Lỗi khi khai báo hàm lambda: khai báo một cá thể đầu tiên
- 10. C khai báo hàm
- 11. Tại sao các mẫu không thể được khai báo trong một hàm?
- 12. Bạn có thể thay đổi một hàm Javascript sau khi khai báo nó không?
- 13. Có thể chuyển tiếp khai báo một hàm bằng Python không?
- 14. C++/CLI, hàm tạo tĩnh bên ngoài khai báo lớp
- 15. % có nghĩa là gì trong khai báo bên ngoài OCaml?
- 16. Có thể đặt một khai báo hàm trong một không gian tên chưa được đặt tên không?
- 17. Tôi có thể sử dụng thẻ grails bên ngoài GSP không?
- 18. Khai báo các tham số bên ngoài người khai báo
- 19. Tại sao tôi không thể khai báo tên hàm "_"?
- 20. Khai báo hàm trong python để có mã có thể đọc và sạch?
- 21. Tại sao lại khai báo một hàm trong chính?
- 22. Phạm vi hàm được khai báo trong hàm
- 23. Có thể khai báo một hàm không có đối số nhưng sau đó chuyển một số đối số cho hàm đó mà không cần tăng ngoại lệ?
- 24. Tại sao lớp của tôi không thể triển khai giao diện được khai báo bên trong?
- 25. Tôi có thể khai báo các biến bên trong câu lệnh chuyển đổi Objective-C không?
- 26. Tôi có thể khai báo biến trong html không?
- 27. `* &` trong khai báo hàm có nghĩa là gì?
- 28. Khai báo hàm mơ hồ trong Javascript
- 29. Khai báo hàm C trong K & R
- 30. PHP trong Aptana - khai báo hàm?
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