#java #javascript #playframework
#java #javascript #playframework
Вопрос:
Есть ли способ получить значение, возвращаемое методом контроллера Java в javascript, в представлениях?
что я хочу сделать, так это:
я просматриваю showX, отображаемый методом контроллера X.show()
я хочу создать объект y, поэтому $.post(‘@{Y.create()}’)
теперь мне нужен идентификатор созданного объекта типа y, чтобы использовать его в том же представлении (showX).
возможно ли это?
Ответ №1:
Похоже, что вам нужно (хотя ваш вопрос очень расплывчатый) вернуть JSON из вашего метода контроллера.
Например, в вашем контроллере вы можете сделать
public static void myActionOne() {
renderJSON(myObject);
}
И затем вы будете вызывать myActionOne
из своего javascript с помощью $.post
. Я бы также посоветовал взглянуть на тег Play jsAction
, если вы его еще не используете. Это вернет представление объекта в формате JSON. Затем вы можете взять любую необходимую вам информацию и вызвать второе действие таким же образом.
Опять же, во втором действии я бы предложил jsAction
, поскольку это значительно упрощает передачу параметров в ваши действия.
РЕДАКТИРОВАТЬ: на основе вашей правки все, что вам нужно сделать, это в вашем методе контроллера Y.создайте, сделайте что-то вроде
public static void create() {
MyObject obj = new MyObject();
obj.save();
Long id = obj.id;
renderJSON(id);
}
Очевидно, что ваш код для создания вашего объекта будет отличаться, но вы поняли идею. Затем вы можете просто взять данные из ответа jQuery post и получить доступ к идентификатору, который был возвращен, используя стандартный javascript.
Комментарии:
1. извините, если мой вопрос недостаточно ясен, но проблема в том, что контроллер не связан с представлением, в котором я хочу получить значение. что я хочу сделать, так это: я нахожусь в режиме просмотра showX, отображаемого методом контроллера X.show () я хочу создать объект y, поэтому $.post(‘@{Y.create()}’) теперь мне нужен идентификатор созданного объекта типа y.
Ответ №2:
Ваш вопрос слишком расплывчатый. Но вам, вероятно, понадобится AJAX, чтобы получить значение такого рода.
Взгляните сюда: http://www.oracle.com/technetwork/articles/javaee/ajax-135201.html
Комментарии:
1. Ну, я вызываю метод контроллера, который создает объект (из скрипта с использованием $.post()), и я хочу получить идентификатор созданного объекта, чтобы передать его другому методу контроллера.
2. Я просто забыл сказать, что второй метод, который я хочу вызвать со значением, возвращенным из первого, находится в другом классе контроллера
3. Просто выполните другой вызов AJAX, который обращается к этому другому контроллеру.