Модуль REST гаджета JIRA не вернет значение
Я пытаюсь разработать гаджет Atlassian JIRA, который будет получать значения из файлов .java с помощью модуля REST. Чтобы справиться с этим, я прочитал документацию JIRA (для REST, гаджетов и многих других) и взял примеры. Итак, я получил следующий код:
gadget.xml:...
<Content type="html" view="profile">
<![CDATA[
#requireResource("com.atlassian.jira.gadgets:common")
#includeResources()
<script type="text/javascript">
(function () {
var gadget = AJS.Gadget({
baseUrl: "__ATLASSIAN_BASE_URL__",
useOauth: "/rest/gadget/1.0/currentUser",
view: {
template: function(args) {
var gadget = this;
var userDetails = AJS.$("<h1/>").text("Hello, "+args.fred.firstName);
gadget.getView().html(userDetails);
},
args: [{
key: "fred",
ajaxOptions: function() {
return {
url: "/rest/My_Dashboard/1.0/users"
};
}
}]
}
});
})();
</script>
]]>
RestHelloWorldService.java:
package com.atlassian.jira.plugin.tutorial;
import com.atlassian.jira.plugin.tutorial.*;
import javax.ws.rs.*;
import javax.ws.rs.core.*;
@Path("/")
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public class RestHelloWorldService {
@GET
@Path("users")
public Response getUncompletedUsers() {
return Response.ok(new User("Fred","Bloggs")).build();
}
}
И User.java:
package com.atlassian.jira.plugin.tutorial;
import com.atlassian.jira.plugin.tutorial.*;
import javax.xml.bind.annotation.*;
@XmlRootElement
public class User
{
@XmlElement
private String firstName;
@XmlElement
private String lastName;
// This private constructor isn't used by any code, but JAXB requires any
// representation class to have a no-args constructor.
private User() { }
public User(String firstName, String lastName)
{
this.firstName = firstName;
this.lastName = lastName;
}
}
СТРОЙ УСПЕХ!
Но мой гаджет все равно ничего не показывает. И данные находятся по адресу URL:
<user>
<firstName>Fred</firstName>
<lastName>Bloggs</lastName>
</user>
Что может быть не так? У меня нет идей...
2 ответа
Решение
Нашел проблему!
Мне пришлось добавить две строки в gadget.xml, чтобы установить для contentType и dataType значение JSON:
...args: [{
key: "fred",
ajaxOptions: function() {
return {
url: "/rest/My_Dashboard/1.0/users",
contentType: "application/json",
dataType: "json",
};
}
}]
В любом случае, спасибо за ответ!
Я могу порекомендовать вам указать путь к ресурсу REST, как показано в примере ниже, и тип MIME как MediaType.TEXT_HTML
,
@Path("/users")
@AnonymousAllowed
public class RestHelloWorldService {
@GET
@Produces(MediaType.TEXT_HTML)
public Response getUncompletedUsers() {
return Response.ok(new User("Fred", "Bloggs")).build();
}
}
Смотрите также: