Я пытаюсь изменить имя моего контроллера и имя метода в Grails
например: abc.com/newUser/viewUser/4
я хочу конвертировать в формат ниже например: abc.com/new-user/view-user/4
Or
например: 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/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, также добро пожаловать.
Спасибо