У меня ошибка при использовании пользовательского идентификатора в Grails - PullRequest
0 голосов
/ 18 октября 2018

Я хочу иметь пользовательский идентификатор, так как по умолчанию Grails обрабатывает имя идентификатора.У меня есть класс домена, подобный этому:

class User {
    Long id_user
    String name
...
    static mapping = {
        id generator: 'increment', name: "id_user", type: 'Long'
    }
...    
}

Когда я сохраняю пользователя, я получаю следующую ошибку 'Can not redirect for object [project.User: (unsaved)] it is not a domain or has no identifier. Use an explicit redirect instead' в действии сохранения

def save(User user) {
    if (user == null) {
        notFound()
        return
    }

    try {
        userService.save(user)
    } catch (ValidationException e) {
        respond usuario.errors, view:'create'
        return
    }

    request.withFormat {
        form multipartForm {
            flash.message = message(code: 'default.created.message', args: [message(code: 'user.label', default: 'User'), user.id])
            redirect user
        }
        '*' { respond user, [status: CREATED] }
    }
}

Чтобы исправить ошибку, япопытался поместить user.id пользователя в функцию сохранения, но она тоже не сработала.

1 Ответ

0 голосов
/ 18 октября 2018

Без создания контрольного примера для его воспроизведения выглядит подозрительно, как

redirect user

пытается перенаправить на /user/show/<user.id>, как следует из сообщения об ошибке, рассмотрите возможность замены на

redirect(action: 'show', params:[id:user.id_user])

Я не очень разбираюсь в пользовательских id s, поэтому я не уверен во всех нюансах, но используемый вами ярлык перенаправления может не соответствовать им.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...