Grails 管制员在那里,但显示“不”;错误代码404未找到页面;圣杯

Grails 管制员在那里,但显示“不”;错误代码404未找到页面;圣杯,grails,Grails,新普惠制: <html> <head> </head> <body> <g:form name="myForm" controller="New" action="index" params="username:username"> <div> <fieldset class="form"> <label for="name">

新普惠制:

<html>
<head>
</head>
<body>
      <g:form name="myForm" controller="New" action="index" params="username:username">
      <div>
          <fieldset class="form">
               <label for="name">Name:</label>
               <div>
               <g:textField name="username" value="${params.userName}"/>
               </div>
          </fieldset>
      </div>
      <g:submitButton name="Submit" value="Submit" />
      </g:form>
</body>
<html>
login.gsp是一个简单的页面,有一个简单的欢迎说明

如果有人提出了解决方案,请回复

提前谢谢。
通过prasanth向控制器添加一个名为login的处理程序

def login = {}

如果视图文件是
new.gsp
,那么您的操作也需要是
new
,或者有一个URL映射(在
UrlMappings.groovy
)来执行以下操作:

"/new" {
    controller = 'new'
    action = 'new'
}
或者你可以设置

static defaultAction = 'new'
…在您的
新控制器中


然后Grails会在您的控制器上找到适当的操作。

发布的代码中有一些问题会给您带来问题:

  • 您正在使用
    $params
    而不是
    params
    访问参数。只有在
    GString
    中时,$字符才是必需的。e、 g.
    def foo=“您的用户名是${params.username}”

  • 您的视图名为
    new.gsp
    ,但您的操作名为
    index
    。默认情况下,Grails将在为控制器命名的目录中查找与操作名称匹配的视图。换句话说,由于您没有明确告诉它呈现
    /new.gsp
    grails将查找
    /new/index.gsp
    。您可以将视图重命名为
    /new/index.gsp
    ,或者让grails在index操作中呈现视图
    new

  • 试图呈现登录页面时,您正在调用
    render(视图:'login.gsp')
    。调用render标记时不需要gsp扩展。您打算使用grails视图名称,而不是文件名<代码>渲染(视图:“登录”)

  • 如果您使用的是grails的最新版本(>2.0),那么应该使用控制器方法,而不是闭包。e、 g.
    def actionName(){}
    对应于
    def actionName()={}
    。原因在grails文档中

  • 以下是解决所有问题后的情况:

    new.gsp
    重命名为
    /new/index.gsp
    。将
    login.gsp
    重命名为
    /new/loggedIn.gsp

    控制器:

    class NewController {
        def index() {
            if (params.userName) {
                forward action: 'loggedIn'
                return // render and forward don't end flow control
            }
        }
    
        def loggedIn() {} // no logic, automatically renders '/new/loggedIn.gsp'
    }
    

    如果您的操作称为索引,则可以访问上的页面

    localhost:8080/webapp/NewController
    

    将控制器名称更改为“新”,而不是中的“新” 它会起作用的


    或者,您可以在控制器中修改“保存”操作,这样当您单击“保存”按钮时,新页面将被呈现。

    您是否有
    登录
    控制器方法?呈现(查看:“/login”)当您收到404时,您试图访问的url是什么?@andymccullough否,,login.gsp是一个简单的页面,包含一些欢迎说明,感谢您的支持response@baxxabit我也试过了,但仍然不起作用。。感谢您的回复。我的控制器是新的,要调用的操作是索引。谢谢你的回答。我纠正了,就像你说的那样。仍然有相同的错误页未找到404。谢谢你的努力和回复,我试过了,但还是有同样的问题,谢谢你的回复,,
    localhost:8080/webapp/NewController