Я бы хотел установить его так, чтобы, когда пользователь посещает приложение с номером телефона в URL, Grails направляет пользователя в указанный профиль, например:
localhost:8080/Application/profile/07871216969 -> /user/show/User.findByUserTelephone(07871216969)
или предпочтительно
localhost:8080/Application/07871216969 -> /user/show/User.findByUserTelephone(07871216969)
Однако я не знаю, как ссылаться на номер телефона в URL при вызове закрытия findByUserTelephone;Я заметил что-то вроде:
/profile/$telephoneNumber
однако я не совсем уверен, как это работает.
Кроме того, поскольку для действия / user / show требуется идентификатор в параметрах, я не уверен, что закрытие findUserByTelephone имеет какое-либо применение, так как возвращает пользователя как объект, и я, похоже, не могу получить getId() или .id объект для получения идентификатора.
РЕШЕНО / РЕШЕНИЕ:
Я решил эту проблему, создав еще одно действие в контроллере под названием profile
, тогда это действие имело код, подобный следующему:
def profile = {
if(User.findByUserTelephone(params.userTelephone)) {
def userInstance = User.findByUserTelephone(params.userTelephone)
if (!userInstance) {
flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), params.id])}"
redirect(action: "list")
}
else {
[userInstance: userInstance]
}
} else {
render("Sorry, that user wasn't found in our database.")
}
}
Затем я создал следующую запись UrlMapping:
`"/$userTelephone"(controller: "user", action: "profile")`
Таким образом, когда пользователь вводит номер телефона в систему (или любую строку после /
), он направляет пользователяк действию пользователя / профиля, которое попытается найти пользователя по его номеру телефона.В случае успеха покажет подробности пользователей, в противном случае отобразится сообщение об ошибке.