我遇到了這個問題。基於朋友的建議,我一直在使用Grails開發一個項目。我仍然是使用Grails的新手,所以任何腳踏實地的解釋都會受到高度的歡迎。Grails中的動態顯示
我的項目是一個Web應用程序,它可以掃描破損或死鏈接並將它們顯示在屏幕上。主要應用程序是用Java編寫的,並且隨着掃描的繼續,它會在系統控制檯上持續顯示輸出(良好鏈接,不良鏈接,掃描頁面)。我已經完成了使用Grails實現我的UI,控制器,視圖和數據庫。現在,我想在我的GSP頁面的一部分中主動顯示forager.gsp當前正在掃描的鏈接,當前發現的不良鏈接數量以及正在掃描的當前頁面。
我試圖實現這種活動顯示的嘗試包括將我的應用程序顯示輸出存儲在控制檯中的數據庫表中。這個表格有一個單獨的行,它隨着當前分頁掃描的變化而不斷更新,找到的好鏈接的數目變化以及發現變化的不良鏈接的數目。由於這個特定的表不斷更新,我在我的控制器中寫了一個動作,它讀取這一行,並將結果呈現給我的用戶界面。我現在面臨的問題是,我需要一種方法,不斷更新在我的UI中間隔一段時間後顯示的結果。我想最終的輸出看起來像
scanning: This page, Bad links: 8, good links: 200
所以基本上這裏是我的控制器動作從數據庫
import groovy.sql.Sql
class PHPController {
def index() {}
def dataSource
def ajax = {
def sql = new Sql(dataSource)
def errors = sql.rows("SELECT *from links")
render (view: 'index', template:'test', model:[errors:errors])
}
}
這裏讀表模板我渲染test.gsp
<table border="0">
<g:each in="${ errors }" var="error">
<tr><td>${ error.address }</td><td>${ error.error}</td><td>${ error.pageLink}</td></tr>
</g:each>
</table>
現在我正在使用測試用戶界面,這意味着這不是我的用戶界面,而是一個用於測試目的的用戶,如index.gsp
<html>
<body>
<div><p>Pleaseeee, update only the ones below</p></div>
<script type="text/javascript">
function ClickMe(){
setInterval('document.getElementById("auto").click()',5000);
alert("Function works");
}
</script>
<div id="dont't touch">
<g:formRemote url="[controller:'PHP', action:'ajax']" update="ajaxDiv"
asynchronous="true" name="Form" onComplete="ClickMe()" after="ClickMe()">
<div>
<input id="auto" type="button" value="Click" />
</div>
</g:formRemote>
<div id="ajaxDiv">
<g:render template="/PHP/test"/>
</div>
</body>
</html>
我試圖更新的div是「ajaxDiv」。任何試圖回答這個問題的人都可以假設我沒有index.gsp,並且可以從頭開始提出解決方案。這是我第一次在我的生活中使用Grails,也是我第一次以任何形式處理Ajax。目的是從我的數據庫中動態獲取數據並顯示結果。或者如果有人知道如何直接將輸出從系統控制檯映射到用戶界面,那也會很棒。
我很感謝您對我的帖子所做的更改。我已經通過你的個人資料,並意識到你必須是一個非常好的Grails專家。如果你能幫忙爲我提供一些東西,這將是非常好的。 – user3295929