我有一個grails 2.2.0應用程序。我創建了一個全局過濾器,並有一些檢查。如果檢查失敗,則使用render view:viewFileName呈現靜態視圖文件,否則返回true,表示應用程序可以繼續。 在登錄操作中,操作呈現調用渲染視圖:loginFileName的登錄視圖,但它會顯示viewFileName。請注意,過濾器傳遞現在已經過去,並且其中的檢查也已通過。 這個問題看起來類似於較早的帖子 Grails "respond" renders the wrong view when launched from .war file 但不同之處在於有兩個同名的索引視圖文件,但在不同的控制器中,但是在這裏我們有過濾器呈現視圖,如果某些條件通過,即使該條件失敗時也會顯示該視圖。 爲了確保這是一個問題,我刪除了呈現過濾器中的渲染視圖:viewFileName,使用渲染「< div> .... </div>」,然後它工作得很好,即動作顯示的是正確的頁面而不是靜態的頁。 如果需要,我可以發佈更多細節。我不能依靠字符串中的頁面進行渲染,因爲這不是長期的。 這裏有兩個班,問題Grails 2.2.0呈現錯誤頁面
class MainController {
def login() {
def param = getHeaderParameters()
render view: "login", model: param
}
}
class MainFilters {
private final String mainControllerName = "main"
private final String startPage = "start"
def GrailsConventionGroovyPageLocator groovyPageLocator
def filters = {
all(controller: '*', action: '*') {
before = {
if (AdminUtils.isStart(request)) {
println "rending start page...."
final fileView = "/$mainControllerName/$startPage"
render view: fileView
}
}
}
}
發佈渲染視圖的行。可能是你沒有正確引用視圖。 – Alidad
渲染視圖:「登錄」,型號:param – Sumit
登錄位置在哪裏?根 ? – Alidad