Giả sử tôi có lược đồ mô tả lớp phần tử gốc Root
có chứa List<Entry>
trong đó lớp Entry
có tên trường bắt buộc.Tùy chỉnh xử lý lỗi của quy trình unmarshall JAXB
Sau đây là cách có vẻ trong mã:
@XmlRootElement
class Root{
@XmlElement(name="entry")
public List<Entry> entries = Lists.newArrayList();
}
@XmlRootElement
class Entry{
@XmlElement(name="name",required=true)
public String name;
}
Nếu tôi cung cấp các XML sau cho unmarshalling:
<root>
<entry>
<name>ekeren</name>
</entry>
<entry>
</entry>
</root>
Tôi có một vấn đề vì sự xâm nhập thứ hai không chứa một tên. Vì vậy, unmarshall sản xuất null
.
Có cách nào để tùy chỉnh JAXB để không đối chiếu một đối tượng Root
chỉ chứa mục nhập "tốt" không?
đó là một ý tưởng hay, Cảm ơn. Tất nhiên tôi sẽ cần phải thiết lập eventHandler để khoan dung cho lỗi "trường được yêu cầu" nhưng nó không phải là một vấn đề. Tôi tự hỏi nếu có một giải pháp khác, tôi đang cố gắng để làm cho người dùng của hệ thống của tôi (tôi đang viết một lib cho nhóm của tôi mà đối phó với cấu hình) để có thể dễ dàng thiết lập tính năng này. Tôi có thể làm điều đó với chú thích và một số lớp introspection để xem tất cả các lĩnh vực cần phải được kiểm tra cho tên yêu cầu vấn đề ... bên trong afterUnmarshal (...). Tôi sẽ giữ điều này chưa được trả lời có thể có ai đó với một câu trả lời suiting hơn cho những gì tôi cần. – ekeren
@ekeren xem bản chỉnh sửa của tôi, hy vọng điều đó sẽ hữu ích. cổ vũ – sfussenegger