我正在尝试更改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,也欢迎..
谢谢
答案 0 :(得分:2)
达到您要求的最简单方法之一是UrlMappings.groovy
"/new_user/view_user/$id"(controller: 'newUser', action: 'viewUser')