Trong điều khiển Grails của tôi, tôi đang trả lời một cuộc gọi AJAX và sử dụng render
để trả lại văn bản:Grails "render" ám chỉ rằng mẫu
def ajaxRandomPersonName = {
def person = get a random person ...
render "Name: ${person.name}"
}
Vấn đề là render
làm cho toàn bộ mẫu. Vì vậy, thay vì chỉ hiển thị "Tên: John", nó sẽ hiển thị tất cả các biểu tượng, điều hướng, v.v. được xác định trong mẫu. Làm thế nào để tôi nhận được render
để chỉ hiển thị mà không có mẫu?
Tôi đang theo dõi Chương 1 của "Grails in Action" (trang 28) sử dụng Grails 1.1.1.
Theo dõi: Trả về false theo đề xuất của Rhysyngsun không có tác động. Tôi cũng cố gắng thiết lập mẫu để null nhưng nó vẫn ám chỉ rằng mẫu:
def ajaxRandomPersonName = {
def person = get a random person ...
render (template:null, text:"Name: ${person.name}")
}
render
có tim cong của nó trên làm cho nó thông qua các mẫu không có vấn đề gì tôi làm.
Theo dõi 2: Parallel discussion trong danh sách gửi thư của người dùng grails.
Theo dõi 3: Mã mẫu: Tôi đã ghép mã của tôi xuống mức tối thiểu và vẫn hiển thị mẫu không mong muốn.
controllers/PersonController.groovy:
class PersonController {
def index = { }
def home = { [message:"Hello"] }
def ajaxTest = {
println "ajaxTest called"
render text: "ajax message"
}
}
views/người/home.gsp (xem trang cho phương pháp nhà)
<html>
<head>
<title>Home View</title>
<g:javascript library="prototype" />
</head>
<body>
<p>
<g:remoteLink action="ajaxTest" update="test1">ajax call</g:remoteLink>
</p>
<p>Message = ${message}</p>
<p id="test1">Blank</p>
</body>
</html>
views/layouts/person.gsp (bố trí mẫu cho người bộ điều khiển)
<html>
<head>
<title>Test App - <g:layoutTitle/></title>
<g:layoutHead/>
</head>
<body>
<h1>Test App</h1>
<g:layoutBody/>
</body>
</html>
Tôi truy cập trình điều khiển người có chế độ xem nhà: http://localhost:8080/test/person/home
trang này hiển thị như: thử nghiệm App gọi ajax (siêu liên kết) nhắn = Xin chào Trống
"Test App" là từ mẫu. Khi tôi nhấp vào "ajax gọi" nó làm cho một cuộc gọi không đồng bộ đến phương pháp ajaxTest PersonController của (xác minh với println). Tất cả ajaxTest làm là println và hiển thị văn bản tĩnh. Kết quả này trong các trường hợp sau:
Test App
ajax call
Message = Hello
Test App
ajax message
Lưu ý rằng mẫu được hiển thị trong "Test App" thứ hai.
Tôi đang chạy Grails 1.1.1. Bất kỳ ý tưởng? Mã có vẻ đơn giản. Tôi đã tải xuống nguồn Grails và xem RenderDynamicMethod.java. Nó không làm bất kỳ mẫu vẽ nào trừ khi mẫu nằm trong danh sách đối số, mà nó không phải là. Vì vậy, chỉ đoán của tôi là một cái gì đó lên hơi nước là rendering mẫu một lần nữa.
bạn biết điều này như thế nào? –
Có, vui lòng giải thích về nơi bạn tìm thấy câu trả lời này. Một lưu ý phụ, Đó là một sự xấu hổ tuyệt đối mà chương 1, mà phải mất tôi 30 phút, đã đưa tôi giờ để hoàn thành. Và, tôi hoàn toàn thất vọng bởi cú đâm đầu tiên của tôi tại Grails –