我有一个 grails 2.2.0 应用程序。我创建了一个全局过滤器,并进行了一些检查。如果检查失败,则使用渲染视图呈现静态视图文件: viewFileName 结束流程,否则返回 true 表示应用程序可以继续。在登录操作中,该操作会渲染一个调用渲染视图的登录视图:loginFileName,但它会改为显示 viewFileName。请注意,过滤器通过现在已经通过,并且它的检查也通过了。这个问题似乎类似于之前的帖子 Grails “respond”在从 .war 文件启动时呈现错误视图 但不同之处在于有两个同名但在不同控制器中的索引视图文件,但这里我们有过滤器渲染视图,如果某些条件通过,即使该条件失败也会显示。为了确保这是一个问题,我删除了该渲染视图:过滤器中的 viewFileName 与渲染“< div> .... < /div >”,然后它运行良好,即操作显示正确的页面而不是静态页面. 如果需要,我可以发布更多详细信息。我不能依赖字符串中的那个页面来呈现,因为这不会是长期的。这是有问题的两个类
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
}
}
}
}