2016-10-07 1 views
1

JAX-RS를 배우고 JAXB를 사용하여 잘 작동하는 XML 데이터를 마샬링/비 정렬 화합니다. 내 문제는 일부 XML 요소를 생략해야하는 요청에 대답하는 것입니다. 다음은 예입니다 :JAXB 및 JAX-RS로 요청시 XML 태그를 생략하는 방법은 무엇입니까?

@XmlRootElement(name = "user") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class User { 

@XmlAttribute 
private int id; 

@XmlElement 
private String username; 

@XmlElement 
private String password; 

사용자 클래스는 사용자

의 목록을 포장하는 데 사용됩니다
@XmlRootElement(name = "users") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Users { 

@XmlElement(name = "user") 
private List<User> users = null; 

public Users() { 
} 

public List<User> getUsers() { 
    return users; 
} 

public void setUsers(final List<User> users) { 
    this.users = users; 
} 

} 

REST 자원

@GET 
@Path("/users") 
@Produces(MediaType.APPLICATION_XML) 
public Users getAllUsers() { 

    final ArrayList<User> users = new ArrayList<User>(userDB.values()); 
    final Users userList = new Users(); 
    userList.setUsers(users); 

    return userList; 
} 

위 다음 생성 출력

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<users> 
<user id="1"> 
    <username>user1</username> 
    <password>passwd0rd</password> 
</user> 
<user id="2"> 
    <username>user2</username> 
    <password>passwd0rd</password> 
</user> 
</users> 

그래서 질문은 ~이야 대한 의견

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<users> 
<user id="1"> 
    <username>user1</username> 
</user> 
<user id="2"> 
    <username>user2</username> 
</user> 
</users> 

감사 : JAXB는 예를 들어 (단지이 요청에 대한) 암호 요소를 생략하고이 같은 출력을하도록 지시 할 수있는 방법이 있는지!

+0

@ulab에서 제안한 값을 null로 설정하는 것이 좋습니다! – Lazlo

답변

0

찾고있는 특수 효과는 @XmlTransient입니다. 이것은 필드를 매핑하지 않으며 요청에 대해 출력에 표시되지 않습니다.

그러나 특정 요청에 대해서만 지정하려면 해당 요청에 대해 명시 적으로 null으로 설정해야합니다.

관련 문제