#select #grails #instance #gsp
#выберите #grails #экземпляр #gsp
Вопрос:
Я написал класс домена и создал каркас для контроллера и представлений. Я немного изменил list.gsp и действие list. Чтобы отфильтровать отображаемое, я поместил на страницу тег g: select.
Всякий раз, когда изменяется значение в выборе, контроллер списка запускается снова и фильтрует возвращаемый экземпляр данных. Это работает как шарм.
Дело в том, что я не могу отобразить измененный экземпляр; единственный известный мне способ обновить GSP — создать окно.location.reload() но это приводит к повторной инициализации страницы. Итак, все возвращается к умолчанию.
Итак, вот вопрос: как я могу заставить свой GSP получать измененные данные экземпляра и отображать их?
Например, один из выбранных. Возвращенный экземпляр фильтруется по выбранным переменным месяца и года.
<g:select id="monthSelection" from="${['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec']}" value="${inputYear}" onchange="${remoteFunction(
action:'list',
params:''selectedYear=' escape(yearSelection.value) 'amp;selectedMonth=' escape(this.value)'
)}"
"/>
Спасибо!
Ответ №1:
Похоже, вам либо нужно
- перезагрузите всю страницу при выборе месяца (передав выбранный месяц в качестве параметра), или
- измените свой
remoteFunction
метод так, чтобы он возвращал представление шаблона, и установитеupdate
параметр приremoteFunction
вызове, чтобы указать, какой div на странице должен динамически обновляться содержимым из возвращаемого представления.
Я использовал вариант 2 в нескольких случаях, когда мне требовалось обновление ajax, и оно отлично работало.
Комментарии:
1. @Robin: Я согласен, что вызов ajax (вариант 2) является более подходящим выбором, поскольку вы используете remoteFunction ( grails.org/Tag — remoteFunction )
Ответ №2:
Попробуйте что-то вроде этого :
<g:select id="monthSelection" from="${['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec']}" value="${inputYear}" onchange="${remoteFunction(
action:'list',
params:''selectedYear=' escape(yearSelection.value) 'amp;selectedMonth=' escape(this.value)',
update : 'divId'
)}"/>
Здесь ‘divId’ должен содержать html-часть, которую вам необходимо обновить после вызова ajax с действием списка.
Нравится :
<div id='divId'>
.....
....
</div>