2

我正在尝试使用 atlassian-connect-play-java 制作一个简单的 HelloWorld 插件:

我的控制器:

package controllers;
import views.html.*;
import com.atlassian.connect.play.java.controllers.AcController;
import com.google.common.base.Supplier;
import play.mvc.Controller;
import play.mvc.Result;
public class Application extends Controller {
     public static Result index()
    {
        return AcController.index(home(), descriptor());
    }
     private static Supplier<Result> descriptor()
    {
        return new Supplier<Result>()
        {
            @Override
            public Result get()
            {
                return AcController.descriptor();
            }
        };
    }
    private static Supplier<Result> home()
    {
        return new Supplier<Result>()
        {
            @Override
            public Result get()
            {
                return ok(index.render("Hello"));
            }
        };
    }
}

我的路线文件:

GET / controllers.Application.index()
GET /assets/*file controllers.Assets.at(path="/public", file)
-> / ac.Routes

我的 index:scala.html 文件:

@(message: String)
@main("Welcome to Play") {
        <p>@message</p>

}

我的 main.scala.html 文件:

@(title: String)(content: Html)
<!DOCTYPE html>
<html>
    <head>
        <title>@title</title>

        <script src="http://localhost:1990/confluence/atlassian-connect/all.js" type="text/javascript"></script>
        <link rel="stylesheet" href="//aui-cdn.atlassian.com/aui-adg/5.4.3/css/aui.css" media="all">
        <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
        <script src="@routes.Assets.at("javascripts/jquery-1.9.0.min.js")" type="text/javascript"></script>
    </head>
    <body>
        <div class="ac-content">
        <p>@content</p>
    </div>

    </body>
</html>

我的 atlassian-connect.json 文件:

{
     "key": "${addonKey}",
     "name": "${addonName}",
     "description": "Atlassian Connect add-on",

     "baseUrl": "${localBaseUrl}",
     "vendor": {
        "name": "Atlassian",
        "url": "http://www.atlassian.com"
    },
     "authentication": {
         "type": "none"
     },

     "modules": {
    "generalPages": [
      {
        "url": "/",
        "key": "test-application",
        "location": "system.user",
        "name": {
          "value": "Test"
        }
      }
    ]
  },
  "scopes": ["READ"]
 }

运行我的播放应用程序时,一切正常。

但是,当我在本地 Confluence 实例上安装插件并启动它时,加载项的内容永远不会停止加载,我收到以下消息:

加载项没有响应。等待还是取消?

我试图找到问题,但我不能,有人可以帮忙吗?

4

2 回答 2

4

所有 Atlassian Connect 插件都需要all.js加载 Javascript 资源,因此它可以在您的插件和主机环境之间建立桥梁。装载机坐在那里,等待建立桥梁。这意味着您不包括all.js.

一个例子:https ://bitbucket.org/atlassian/whoslooking-connect/src/9066821fe168737b94d5b1e8ad520befb200ec99/app/views/poller.scala.html?at=master#cl-43

如果这不能解决您的问题,请仔细检查浏览器控制台是否有错误。它可能会提示问题所在。还要检查网络选项卡(可能需要重新加载)以确保所有资源都已加载。

默认情况下,一些框架还会发出一个X-Frame-Origin: SAMEORIGIN标头,导致浏览器永远不会加载 iframe 的内容。atlassian-connect-play 不应该是这种情况。

于 2015-02-09T14:03:53.003 回答
1

谢谢您的答复 :)

我在描述符中指定的 url 无效。confluence 不接受简单的“/”或空 url “”,因此我不得不将其更改为“/home”并更改我的路由文件。

于 2015-02-12T08:38:34.430 回答