如何在Grails 2.2.2中更改控制器名称和功能名称URL?

时间:2014-08-18 13:27:24

标签: spring grails groovy grails-2.0 grails-controller

我正在尝试更改grails中的控制器名称和方法名称

例如:abc.com/newUser/viewUser/4

我想转换为以下格式 例如:abc.com/new-user/view-user/4

或者

例如:abc.com/new_user/view_user/4

为此我写了一个代码:

package customize

import grails.web.UrlConverter

import org.apache.commons.lang.StringUtils

class CustomUrlConverter implements UrlConverter {

    private static final String GRAILS_EXTENSION = '_'

    String toUrlElement(String propertyOrClassName) {

        if (StringUtils.isBlank(propertyOrClassName)) {

            return propertyOrClassName

        } else {

            String[] r =    propertyOrClassName.split("(?=\\p{Upper})");
            String lowerPropertyOrClassName = propertyOrClassName.toLowerCase();
            println r.length + "size()";
            String extendedPropertyOrClassName="";
            if(r.length > 1){
                for(int i=0; i < r.length;i++){
                    extendedPropertyOrClassName = extendedPropertyOrClassName + r[i].toLowerCase()
                    if(i+1 <  r.length ){
                    extendedPropertyOrClassName =addGrailsExtension(extendedPropertyOrClassName);
                    }
                }
            }else{
                extendedPropertyOrClassName =  propertyOrClassName.toLowerCase()
            }
            return extendedPropertyOrClassName

        }
    }



    private String addGrailsExtension(String propertyOrClassName) {

        if (propertyOrClassName.endsWith(GRAILS_EXTENSION)) {

            return propertyOrClassName

        } else {

            return propertyOrClassName + GRAILS_EXTENSION

        }

    }
}

在Config.groovy中

grails.web.url.converter = 'hyphenated'

// grails-app / conf / spring / resources.groovy

beans = {
    "${grails.web.UrlConverter.BEAN_NAME}"(com.myapplication.MyUrlConverterImpl)
}

在这个时候,我想把所有角色都写成小写字母,如下面的Url

例如:abc.com/newuser/viewuser/4

工作正常

但是当我在两个字符之间添加下划线时,如下面的Url

例如:abc.com/new_user/view_user/4

它给出了错误404 .. 请帮帮我。如果您有任何其他选项可以更改URL,也欢迎..

谢谢

1 个答案:

答案 0 :(得分:2)

达到您要求的最简单方法之一是UrlMappings.groovy

"/new_user/view_user/$id"(controller: 'newUser', action: 'viewUser')