Grails 3应用程序在本地工作,但在部署到远程Tomcat

时间:2016-11-30 22:14:57

标签: java-8 tomcat8 grails-3.1

我创建了一个Grails 3.1.1应用程序,它使用表单来加载带有数据的表。在本地运行,一切正常。但是,当部署到远程Tomcat时,提交表单会导致javax.servlet.ServletException错误。

典型错误: javax.servlet.ServletException: Could not resolve view with name 'stuckOrders' in servlet with name 'grailsDispatcherServlet'

来自stuckOrders.gsp的

片段:

<html>
    <head>
        <meta name="layout" content="main"/>
        <asset:javascript src="application.js"/>
        <title>LPP Order Fixer</title>
    </head>
<body>
    <div id="orders" style="float:left;width:70%;height:90%;">
        <g:form name="stuckOrders" controller="lppOrderFixer" action="stuckOrders">
            <label>Location: </label>
            <input type="radio" id="locationReno" name="location" value="Reno"> Reno
            <input type="radio" id="locationGalion" name="location" value="Galion"> Galion
            <g:actionSubmit value="Locate Orders" action="stuckOrders"/>

LppOrderFixerController.groovy:

package lpporderfixer
class LppOrderFixerController {
    def lppOrderFixerService
    def location

    def index() {}
    def stuckOrders() {
        location = Location.valueOf(params?.location)
        List stuckOrdersList = lppOrderFixerService.fetchStuckOrders(location)
        [stuckOrders:stuckOrdersList]
    }
}

UrlMappings.groovy:

package lpporderfixer
class UrlMappings {
    static mappings = {
        "/$controller/$action?/$id?(.$format)?"{
            constraints {
                // apply constraints here
            }
        }
        "/"(view:"/lpporderfixer/stuckOrders")
        "500"(view:'/error')
        "404"(view:'/notFound')
    }
}

项目视图布局:

LPPOrderFixer view layout

我尝试在LppOrderFixerController.groovy中用[stuckOrders:stuckOrdersList]替换render(view: 'stuckOrders', model:[stuckOrders:stuckOrdersList],似乎没有改变任何内容。

在本地,应用程序从http://localhost:8080/开始。提交表单然后填充表格,URL更改为http://localhost:8080/lppOrderFixer/stuckOrders

在远程Tomcat上,应用程序不在根上下文中,因此它从http://<remotehost>:8080/lpporderfixer/开始。提交表单会导致错误,位于网址http://<remotehost>:8080/lpporderfixer/lppOrderFixer/stuckOrders

我花了整整一天试图让这个工作起来,任何建议都会受到高度赞赏。提前谢谢!

1 个答案:

答案 0 :(得分:0)

我怀疑这种情况很糟糕,因为GSP没有在您的war文件中编译和发送。

如果尚未

,请将其添加到build.gradle文件中
apply plugin:'war'
apply plugin:'org.grails.grails-web'
apply plugin:"org.grails.grails-gsp"

寻找apply plugin:"org.grails.grails-gsp",你应该已经有了前两个。