Playframework: Хак для подстановки переменной в route на этапе выполнения javascript

Допустим, вам надо сформировать на этапе выполнения джаваскрипта из маршрута (route) ссылки вида:
/entity/editform/5
/entity/editform/6
Сам маршрут такой:
GET 	/entity/editform/:id controllers.EntityController.entityEdit(id:Long)
При этом, в scala виде (view) внутри javascript вы можете располагать только переменной entity.id (получили массив сущностей с помощью ajax). Поэтому вызов вида:
...
url: '@routes.EntityController.entityEdit(entity.id)';
будет вызывать ошибку на этапе компиляции scala: во view - в области видимости scala - нет объекта entity c полем id. Но ведь какое-то число скормить скале надо! Что же можно тут сделать? Можно вспомнить, что Long может принимать и отрицательные значения. В то же время, сущность в ID отрицательные числа иметь не может. Значит можно вызвать:
var editUrl = '@adminnew.routes.PromocodeController.promocodeRenderEditForm(-10)';
и получить: entity/editform/-10 А потом сделать замену:
editUrl.replace("-10", entity.id);
Такая замена не сможет испортить ссылку для редактирования какой-то сущности, т.к. сущностей с отрицательным ID не существует в нормальных условиях. Если все-таки в вашем проекте существуют, то придется покумекать. Возможно, надо будет назначить численное значение, которое обрабатывается особым образом.
You can leave a response, or trackback from your own site.

One Response to “Playframework: Хак для подстановки переменной в route на этапе выполнения javascript”

  1. Aleksanlub:

    Очень долго искал инфу в сети, пока не нашел этот сайт.
    Для меня информация на этом сайте оказалась очень полезной.
    Всем успехов!

Leave a Reply