Play framework: установка возвращаемого значения метода java для переменной javascript

#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, который обращается к этому другому контроллеру.