【问题标题】:Play framework: setting a java method return value to a javascript var播放框架:将 java 方法返回值设置为 javascript var
【发布时间】:2023-03-08 13:18:01
【问题描述】:

有没有办法在视图中获取 javascript 中的 java 控制器方法返回的值?

我想做的是:

我正在查看由控制器方法 X.show() 渲染的 showX

我想创建一个对象 y 所以 $.post('@{Y.create()}')

现在我需要创建的 y 类型对象的 id 才能在同一个视图 (showX) 中使用它。

这可能吗?

【问题讨论】:

    标签: java javascript playframework


    【解决方案1】:

    听起来你需要的是从你的控制器方法返回 JSON(虽然你的问题很模糊)。

    例如,在您的控制器中,您可以这样做

    public static void myActionOne() {
        renderJSON(myObject);
    }
    

    然后您将使用$.post 从您的javascript 调用myActionOne。如果您还没有使用它,我还建议您查看 Play jsAction 标签。这将返回对象的 JSON 表示。然后,您可以获取所需的任何信息并以相同的方式调用第二个操作。

    再次,在第二个操作中,我建议jsAction,因为它可以更轻松地将参数传递到您的操作中。

    编辑: 根据您的编辑,您需要做的就是在您的控制器方法 Y.create 中,执行类似

    public static void create() {
        MyObject obj = new MyObject();
        obj.save();
        Long id = obj.id;
        renderJSON(id);
    }
    

    显然,您创建对象的代码会有所不同,但您明白了。然后,您可以从 JQuery 发布响应中获取数据,并使用标准 javascript 访问已返回的 id。

    【讨论】:

    • 对不起,如果我的问题不够清楚,但问题是控制器与我想要获取值的视图无关。我想要做的是:我在视图中由控制器方法 X.show() 渲染的 showX 我想创建一个对象 y 所以 $.post('@{Y.create()}') 现在我需要创建的 y 类型对象的 id。
    【解决方案2】:

    你的问题太模糊了。但是您可能需要 AJAX 来获得这种值。

    看这里:http://www.oracle.com/technetwork/articles/javaee/ajax-135201.html

    【讨论】:

    • 好吧,我正在调用一个创建对象的控制器方法(从使用 $.post() 的脚本),我想获取创建对象的 id 以将其传递给另一个控制器方法.
    • 我只是忘了说我想用第一个返回的值调用的第二个方法在不同的控制器类中
    • 只需执行另一个 AJAX 调用来访问另一个控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多