URL映射在grails中无法正常工作

时间:2014-07-03 07:34:26

标签: grails

我正在做一个应用程序,它是来自-definitive-guide-to-grails的{gomunes definitive-guide-to grails

我用自定义网址重定向到存储控制器

UrlMappings.groovy
class UrlMappings {

    static mappings = {
        "/"(controller:"store")
}
}

所以当我启动应用程序时,它将转到默认的商店控制器  我有User域类和UserController类,它们都有动作注册和登录

User.groovy
class User {
String login
String password
...
}
UserController.groovy
class userController.groovy
{
def register(){
...}
def login(){
..}

StoreController.groovy
class StroeController{
def index(){
..}

USerController在user / register.gsp和store / index.gsp下有相应的视图页面

store/index.gsp is
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<meta name="layout" content="main"/>
<title>gTunes Store</title>
</head>
<body id="body">
Your Online music store and storage service!
<p>Manage your own library, browse music and purchase new tracks as
they become available</p>
</body>
</html>

我想在整个应用程序中显示登录页面我在main.gsp中放置了

下的登录名和密码字段
layouts/main.gsp
main.gsp is
<g:form name="loginForm"  url="[controller:'user',action:'login']">
Username:
 <g:textField name="login"
 value="${fieldValue(bean:loginCmd, field:'login')}">
 </g:textField><br>
Password:
 <g:passwordField name="password"></g:passwordField> 
 <br/>
 <input type="image"
 src="${createLinkTo(dir:'images', file:'login-button.gif')}"
 name="loginButton" id="loginButton" border="0"></input>
 </g:form>
<g:link controller="user" action="register" >Signup now</g:link>
 to start your own personal Music collection!

上面的main.gsp包含具有登录文本字段和密码文本字段以及一个按钮的表单,它还包含一个链接标记,当我运行应用程序进入应用程序时,该标记用于注册过程存储控制器默认索引页面,基于默认的url映射,这个索引页面还包含登录文本字段和密码字段以及登录按钮,它还包含注册链接,当我按下登录按钮时它工作正常但是当点击标志时即使register.gsp和User控制器包含注册操作,但是当我删除&#34; /&#34;(控制器:&#34;存储&)时,它不会进入用户控制器的注册页面。 #34;)来自url Mappings类的代码然后我执行应用程序应用程序显示我点击Store控制器的控制器列表它移动到其索引页面我点击注册链接现在注册链接工作正常它去注册gsp页面o f用户控制器,但是当我使用上面的自定义网址映射

时,它无法正常工作

2 个答案:

答案 0 :(得分:0)

您需要在自定义映射之前添加“默认”映射

"/$controller/$action?/$id?"{ constraints {
                // apply constraints here
            } }

此映射:

  "/"(controller:"store")

只映射“/”所以任何请求都会转到商店控制器,因为你没有任何其他规则,所以如果你试图访问/ user / login,它会尝试在商店中搜索用户视图控制器。

答案 1 :(得分:0)

试试这个..它对我有用。(Grails 2.4.5 / java 8和java 7)

class UrlMappings { 
   static mappings = {
    "/$controller/$action?/$id?"{
            // apply constraints here   
    }
    "/intialize/$id?" (controller: "xyz") {
            action = [GET:"abc"]
    }
    "/checksession" (controller: "xyz") {
            action = [GET:"mno"]
    }