我开始写一个简单的登录公式。这是视图的代码:
<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>
答案 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