Grails - 404文件未找到 - 但为什么?

时间:2011-06-30 18:52:16

标签: grails groovy login

我开始写一个简单的登录公式。这是视图的代码:

 <g:form controller="login" action="checkUsernameAndPassword">
        <input type = "text"name="userNameField" value="userName"/>
        <input type = "password"name="passWordField" value="passWord"/>
        <input type = "submit" name="loginButton" value="Login"/>

 </g:form>

这是控制器的代码:

class LoginController {

def index = {

    render(view: "login")
}//endMethod Index

def checkUsernameAndPassword = {

    [userName = params.userName ,passWord = params.passWord];

}//endMethod checkUsernameAndPassword

}

正如你所看到的,它还没有做任何事情,我只是想在屏幕上打印这些值,但我得到一条404消息(我在本地主机上运行该文件)

The requested resource (/projectName/hello/checkUsernameAndPassword) is not available.

我只是想弄清楚原因。如果你们中的任何人都有我的小费,那就太好了。

至少问候, 丹尼尔

编辑(更改1):

    def checkUsernameAndPassword = {

    render(view: "login",model: [userName: params.userName ,passWord: params.passWord])

}//endMethod checkUsernameAndPassword

}

(变更2) //在视图中添加了这一行

<div>Username: ${userName} Passwort: ${passWord}</div>

1 个答案:

答案 0 :(得分:3)

<g:form controller="hello" action="checkUsernameAndPassword">

表示您使用 checkUsernameAndPassword 操作 HelloController

但是在您的代码示例中,您有 LoginController ,所以为了让您的表单正常工作,您必须写:

 <g:form controller="login" action="checkUsernameAndPassword">
        <input type = "text" name="userNameField" value="userName"/>
        <input type = "password" name="passWordField" value="passWord"/>
        <input type = "submit" name="loginButton" value="Login"/>

 </g:form>

P.S。在Grails世界中,使用GSP标签而不是普通HTML有时要好得多,因为它会为您生成适当的(在99.99%的情况下)HTML代码。 因此,实现表单的最佳方式是:

 <g:form controller="login" action="checkUsernameAndPassword">
       <g:textField name="userNameField" value="userName" />
        <g:passwordField name="passWordField" value="passWord" />
        <g:submitButton name="loginButton" value="Login" />
 </g:form>

P.S.2 正确的LoginController代码(对于前面描述的形式)

class LoginController {

def index = {

    render(view: "login")
}//endMethod Index

def checkUsernameAndPassword = {

    [userName: params.userNameField ,passWord: params.passWordField];

}//endMethod checkUsernameAndPassword