2

新的.gsp:

<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>

新控制器.groovy:

package sample
import com.sun.org.apache.bcel.internal.generic.NEW;

class NewController {
    def index = {
        if($params.userName){
            render(view:"/login.gsp")
        }
    }
}

login.gsp 是一个简单的页面,有一个简单的欢迎说明。

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

提前致谢。通过 prasanth

4

5 回答 5

1

将您的控制器名称更改为“new”而不是 New in 它会起作用。

否则,您可以在控制器中修改“保存”操作,以便在单击保存按钮时呈现新页面。

于 2013-10-31T06:28:30.020 回答
1

发布的代码中有一些问题会导致您出现问题:

  1. 您正在使用$params而不是访问参数params。$ 字符仅在您位于GString. 例如def foo = "your username is ${params.userName}"

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

  3. 尝试呈现您的登录页面时,您正在调用render(view: 'login.gsp'). 调用渲染标签时不需要 gsp 扩展。您打算使用 grails 视图名称,而不是文件名。render(view: 'login')

  4. 如果您使用的是最新版本的 grails (>2.0),您应该使用控制器方法而不是闭包。例如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'
}
于 2013-08-01T14:22:23.147 回答
0

向您的控制器添加一个名为 login 的处理程序。

def login = {}
于 2013-07-24T12:15:11.423 回答
0

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

localhost:8080/webapp/NewController
于 2013-08-03T22:31:30.093 回答
0

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

"/new" {
    controller = 'new'
    action = 'new'
}

或者你可以设置

static defaultAction = 'new'

...在你的NewController.

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

于 2013-08-01T10:37:01.137 回答