Этот вопрос является расширением / похож на вопрос, который я задал здесь . Конкретная проблема, с которой я столкнулся в этом вопросе, была решена, но у меня возникла еще одна очень похожая проблема.
Проблема заключается в том, что значения «Cargo Destination» и «Cargo Source», введенные в представлении create
, не отображаются в представлении save
. Например, когда пользователь забывает введите необходимый бит информации в представлении create
и нажмите кнопку «Создать», значения, введенные пользователем, должны отобразиться в представлении save
. Все поля, кроме «Назначение груза» и «Источник груза», отображаются в представлении save
, когда происходит этот сценарий.
Когда я помещаю оператор println
в мой контроллер save
, я вижу, что рассматриваемые параметры действительно достигли контроллера save
из представления create
.
Эти два поля связаны с другими полями и заполнены AJAX, который идет к замыканию в контроллере Load
. Я полагаю , что это закрытие, где моя проблема, в выражении render
:
def getAccountUserCargoDestinations = {
if(params.id == ""){
render g.select(name: 'cargoDestination.id')
return
}
def user = Account.find("from Account as account where account.id=:id", [id:Long.valueOf(params.id)]).user
def addresses = Address.find("from Address as addresses where addresses.user=:user and addresses.cargoDestination=true", [user:user])
render g.select(optionKey: 'id', from: addresses, name: 'cargoDestination.id')
}
Если проблема не в этом, то, вероятно, она находится в соответствующем поле самого представления create
:
<g:select name="cargoDestination.id" optionKey="id" value="${loadInstance?.cargoDestination?.id}" />
Еще две вещи:
1.) Grails не дает мне никаких ошибок
2.) A cargoDestination
и cargoSource
являются экземплярами класса Address
, который я создал.
Буду признателен за любую помощь.
UPDATE:
Продолжая искать решение, я заметил несколько интересных вещей. Сначала я помещаю следующий код в мое представление create
(которое отображается закрытием create
в контроллере нагрузки и повторно обрабатывается закрытием save
в контроллере нагрузки, если пользователь оставляет все поля пустыми):
<g:if test="${loadInstance?.cargoDestination?.id != null}">
${loadInstance?.cargoDestination}
</g:if>
Поступая таким образом, я вижу, что параметр проходит весь путь до представления create
, когда он вызывается замыканием save
. Я думаю, я мог бы использовать <g:if> tags to get the desired results, but that just seems messy, and I doubt that is the "correct" way to solve this problem. I also wrapped my AJAX in a similar
tag to make sure it was not changing the field value when the
сохранить closure rendered the
создать view, and I can confirm that the AJAX is indeed not changing the field value. Other than the AJAX, the only thing different about my problem fields is that I do not have a
из attribute in their corresponding
`тегов (как видно из кода, который я опубликовал в этом вопросе). Я знаю, что решение простое ... Что мне здесь не хватает?