Search code examples
grailsgsp

Grails 3.1.10 Can't find views


I have a 'JacketController' with a method show() trying to render a model to the view worklist.gsp

  def show() {
        LOG.debug("JacketController:show()")
        render(view:"worklist", model:PatientSearchResult.list()) as HTML
    }

But every time I call the action from the browser I get the error:

[Could not resolve view with name '/jacket/worklist' in servlet with name 'grailsDispatcherServlet'] with root cause  StandardWrapperValve.java 250 javax.servlet.ServletException: Could not resolve view with name /jacket/worklist' in servlet with name 'grailsDispatcherServlet'...

I would think it's telling me worklist.gsp doesn't exist or is in the wrong place but worklist.gsp is in the grails-app/views/jacket directory.

My url mapping looks as follows:

        "/jacket" {
        controller = { 'jacket' }
        action = { GET: 'show' }
    }

I don't know if I'm missing a plugin or what but my build.gradle is here:(forgive the formatting)

buildscript {
ext {
    grailsVersion = project.grailsVersion
}
repositories {
    mavenLocal()
    maven { url "https://repo.grails.org/grails/core" }
}
dependencies {
    classpath "org.grails:grails-gradle-plugin:$grailsVersion"
    classpath "org.grails.plugins:hibernate4:5.0.10"
    classpath "org.grails.plugins:views-gradle:1.0.12"
    classpath "com.bertramlabs.plugins:asset-pipeline-gradle:2.11.2"
 }} configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    if (details.requested.name == 'log4j') {
        details.useTarget "org.slf4j:log4j-over-slf4j:1.7.5"
    }
    if (details.requested.name == 'commons-logging') {
        details.useTarget "org.slf4j:jcl-over-slf4j:1.7.5"
    }

} }

version "0.1" group "viops"

apply plugin:"eclipse" apply plugin:"idea" apply plugin:"war" apply plugin:"org.grails.grails-web" apply plugin:"org.grails.plugins.views-json" apply plugin:"org.grails.grails-gsp" apply plugin:"asset-pipeline"

ext { grailsVersion = project.grailsVersion gradleWrapperVersion = project.gradleWrapperVersion }

repositories { mavenLocal() maven { url "https://repo.grails.org/grails/core" } }

dependencyManagement { imports { mavenBom "org.grails:grails-bom:$grailsVersion" } applyMavenExclusions false }

dependencies { //This top section pulls out Grails Logback logging solution and //replaces it with log4j2 // added the new way using Log4j2, yes, spring makes it easy compile "org.springframework.boot:spring-boot-starter-log4j2"

// changed spring-boot-autoconfigure so that it would not
// pull in the logback binding/implementation
compile('org.springframework.boot:spring-boot-autoconfigure') {
    exclude group: 'ch.qos.logback', module: 'logback-classic'
}
compile ('org.springframework.boot:spring-boot-starter-actuator'){
    exclude group: 'ch.qos.logback', module: 'logback-classic'
}


// and finally, added the log4j2 binding/implementation
compile "org.apache.logging.log4j:log4j-api:2.5"
compile "org.apache.logging.log4j:log4j-core:2.5"

compile "org.grails:grails-core"
provided "org.springframework.boot:spring-boot-starter-tomcat"
compile "org.grails:grails-plugin-url-mappings"
compile "org.grails:grails-plugin-rest"
compile "org.grails:grails-plugin-codecs"
compile "org.grails:grails-plugin-interceptors"
compile "org.grails:grails-plugin-services"
compile "org.grails:grails-plugin-datasource"
compile "org.grails:grails-plugin-databinding"
compile "org.grails:grails-plugin-async"
compile "org.grails:grails-web-boot"
compile "org.grails:grails-logging"
compile "org.grails.plugins:cache"
compile "org.grails.plugins:hibernate4"
compile "org.hibernate:hibernate-ehcache"
compile "org.grails.plugins:views-json"
console "org.grails:grails-console"
profile "org.grails.profiles:rest-api"
runtime "com.h2database:h2"
testCompile "org.grails:grails-plugin-testing"
testCompile "org.grails.plugins:geb"
testCompile "org.grails:grails-datastore-rest-client"
testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1"
testRuntime "net.sourceforge.htmlunit:htmlunit:2.18" }

Can anyone point me in the right direction?


Solution

  • quindimildev posted the answer in the comment.

    I should have created an app with the web profile to begin with. So, I created a new project with the web profile and compared the resulting build files with the existing app.

    I brought over the dependencies that were missing in the REST profile and commented out a couple that might have conflicted.