Синтаксис Grails RemoteFunction params

Я пытаюсь передать несколько параметров remoteFunction в чашах Грааля, но я изо всех сил пытаюсь отформатировать его правильно

Я хочу передать в значении части данных на странице плюс значение текстового поля, из которого я только что снабдил вкладками, таким образом, в моем onblur у меня есть что-то вроде:

onblur=${remoteFunction(action:'dave',  update:'pack'+it.id,
         params:[denom:document.getElementById(denomValue+${it.id}).value ,
         amount:this.value ])}

Это не компилирует - ни один не делает перестановок, которые я могу придумать с переменными числами одинарных кавычек и символов ESC..

Я думаю, что действительно озадачивает меня, thatI Дон; t действительно понимают то, что я пытаюсь создать здесь. Похож на это с помощью кода JSP для создания JavaScript который iwill быть позже выполненным? Когда это выражение становится оцененным - это в то время, когда страница компилируется - или является a=it в то время, когда oblur называют?

Любая справка значительно ценится.

8
задан Noel 12 April 2014 в 04:16
поделиться

1 ответ

Я использую алгоритм шунтирования для создания RPN. Затем я «компилирую» RPN в маркированную форму, которая может быть выполнена (интерпретированно) повторно без повторного анализа выражения.

-121--3977948-

Если вы хотите сделать это правильно, кажется, вам нужно нанять человека, чтобы перевести для вас. Предпочтительно носитель языка. Я уверен, что вы можете найти некоторые услуги с помощью быстрого поиска в Google.

-121--2664691-

Похоже, что вы перепутали серверный код с клиентским.

Код Grails будет оцениваться при «построении» страницы для отправки в браузер клиента.

Код Javascript будет вычислен после доставки страницы в браузер.

С учетом этого рассмотрим ваше назначение onblur:

onblur=${remoteFunction(
         action:'dave', 
         update:'pack'+it.id, 
         params: [denom: document.getElementById(denomValue+${it.id}).value, 
                  amount: this.value ])}

Учитывая, что вызов $ {remoteFunction...} является тэгом Grails, он будет вычисляться на сервере, генерировать фиксированную последовательность, а затем отправляться клиенту. Все внутри вызова должно быть действительным кодом Groovy.

Посмотрите на карту параметров, вы добавили несколько Javascript в значение denom, в код Groovy:

document.getElementById(denomValue

затем вы пытаетесь добавить значение из Groovy

+${it.id}

, затем некоторые Javascript снова

).value

Компилятор Groovy попытается оценить Javascript как код Groovy и не получится.

Если требуется получить доступ к параметрам на стороне клиента в Javascript, необходимо обработать Javascript самостоятельно (а не использовать тэг remoteFunction), например, для обработки удаленного вызова:

var path=${createLink(action:'dave',
                      params: [amount:this.value])} 
           + "&denom=" 
           + document.getElementById(denomValue+${it.id}).value

Также необходимо обработать удаленный ответ самостоятельно с помощью Javascript для обновления элементов «пакета». Всегда можно посмотреть, что создает вызов remoteFunction, скопировать его на страницу и отредактировать для выполнения необходимых действий.

HTH

9
ответ дан 5 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: