簡體   English   中英

@XmlRootElement 在 jersey rest 中不起作用

[英]@XmlRootElement not working in jersey rest

錯誤:

MessageBodyWriter 找不到媒體類型 = 應用程序/xml,類型 = 類 com.example.DemoRest2.Employee,genericType = 類 com.example.DemoRest2.Employee。

我想以 xml 格式返回 Employee.class 的 object 但出現上述錯誤。 我正在使用 @XmlRootElement 注釋。 但是,當我以字符串格式返回它時它工作正常。

EmployeeRsource.java

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

@Path("employee")
public class EmployeeResource {

@GET
@Produces(MediaType.APPLICATION_XML)
public Employee getEmp() {
    
    Employee e1 = new Employee();
    e1.setName("Tom");
    e1.setAge(25);
    System.out.println(e1);
    
    return e1;
}
}

員工.java

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Employee {

private String name;
private int age;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
@Override
public String toString() {
    return "Employee [name=" + name + ", age=" + age + "]";
}   

}

在用戶界面上獲取“內部服務器錯誤 500”

我已經有以下依賴項:jersey-media-jaxb - 3.0.2 jaxb-api - 2.3.1 jersey-container-servlet-core jersey-hk2 jersey version - 3.0.2

Jakarta EE 工作組宣布,隨着 Jakarta EE 9 平台和 Web Profile 規范及相關 TCK 的發布,javax 現已正式並最終更名為 jakarta。

要使用 @XmlRootElement,導入 jakarta.xml.bind.annotation.XmlRootElement,添加以下內容后,

<dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>3.0.1</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-jaxb</artifactId>
        <version>2.33</version>
    </dependency>

    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-osgi</artifactId>
        <version>3.0.2</version>
    </dependency>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM