我有一个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