Một tùy chọn hiển nhiên là chỉ cần đổi tên các tệp HTML của bạn từ foo.html
thành _foo.gsp
và sau đó sử dụng <render template="foo">
. Tuy nhiên, điều này rõ ràng đến mức tôi chắc chắn bạn đã nghĩ về nó.
Nếu bạn đơn giản chỉ muốn làm cho một file HTML từ bên trong một bộ điều khiển bạn có thể sử dụng text
tham số của phương pháp render
khiển
def htmlContent = new File('/bar/foo.html').text
render text: htmlContent, contentType:"text/html", encoding:"UTF-8"
Nếu bạn muốn làm điều tương tự từ bên trong một .gsp , bạn có thể viết một thẻ. Một cái gì đó như sau (chưa được kiểm tra) nên làm việc:
import org.springframework.web.context.request.RequestContextHolder
class HtmlTagLib {
static namespace = 'html'
def render = {attrs ->
def filePath = attrs.file
if (!file) {
throwTagError("'file' attribute must be provided")
}
def htmlContent = new File(filePath).text
out << htmlContent
}
}
Bạn có thể gọi thẻ này từ một GSP sử dụng
<html:render file="/bar/foo.html"/>
Nguồn
2010-02-17 14:48:23
Cảm ơn Don! Điều này có vẻ như nó (phần thứ hai tức là.). Tôi sẽ thử và cập nhật kết quả của tôi tại đây. – sector7
Đừng - không biết nếu bạn sẽ thấy điều này, hy vọng như vậy. Tôi đã thử mã mà bạn đã đăng, nhưng có vẻ như tôi phải chỉ định một tệp có liên quan đến thư mục gốc của máy tính của tôi, ví dụ: "C: /grails2.0/..." Làm cách nào để làm cho nó hoạt động liên quan đến thư mục webroot của tôi, như chế độ xem kết xuất hiện đang hoạt động, tìm kiếm tệp trong thư mục chế độ xem thích hợp? – Ray
@Ray Nếu bạn đặt các tệp HTML trong ứng dụng web, bạn có thể truy xuất chúng bằng cách sử dụng 'g.resource' –