Tôi đang làm việc trên Dịch vụ web trên JAX-RS đã hoạt động. Bây giờ tôi đang tìm cách để bắt một số ngoại lệ để gửi một lỗi 40X với một tin nhắn tùy chỉnh cho người dùng.Làm cách nào để đặt lỗi 40X với thông báo tùy chỉnh trên Ngoại lệ JAX-RS?
Tôi có dịch vụ web và ExceptionMapper.
Đây là dịch vụ web của tôi:
@Path(value = "/test/")
public interface ServiceTest {
@Path(value = "{rrf}")
@GET
@Produces(MediaType.TEXT_XML)
public ObjectDTO getDealer(@PathParam("rrf") String rrf){
ObjectDTO objectDTO = new ObjectDTO();
if(verifyRRFSintax(rrf)) {
//Get the objet, this part works fine
} else {
throw new IllegalArgumentException("Custom message");
}
return dwsDTO;
}
private boolean verifyRRFSintax(String rrf) {
return rrf.matches("[0-9]{8}");
}
}
Đây là ExceptionMapper tôi
@Provider
@Produces(MediaType.TEXT_XML)
public class IllegalArgumentExceptionMapper
implements ExceptionMapper<IllegalArgumentException> {
@Override
public Response toResponse(IllegalArgumentException e) {
return Response.status(Response.Status.BAD_REQUEST).build();
}
}
và đây là cách nó registed vào file ứng dụng context.xml
<bean id="serviceTest" class="ServiceTest"/>
<jaxrs:server id="Server" address="/ws">
<jaxrs:serviceBeans>
<ref bean="serviceTest"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean id="rffErrorException" class="IllegalArgumentExceptionMapper"/>
</jaxrs:providers>
</jaxrs:server>
Khi Tôi gỡ lỗi, IllegalArgumentExceptionMapper bắt ngoại lệ tôi ném nhưng tôi không thấy thông báo trên màu vàng trang web được hiển thị trên trình duyệt. Tôi luôn có một số
Erreur d'analyse XML : aucun élément trouvé/XML Parsing Error: no element found (in english)
Làm cách nào để hiển thị thông báo tùy chỉnh này trên trình duyệt? Tại sao, ngay cả khi tôi thay đổi loại Trạng thái phản hồi (NOT_FOUND, BAD_REQUEST, FORBIDDEN), trang màu vàng này luôn giống nhau?
PD: Trên bảng điều khiển, tôi có một thông báo "out.handlemessage" được in khi Mapper bắt ngoại lệ.
Cảm ơn.
kẻ Ok, cảm ơn, cuối cùng tôi đã tìm thấy những gì tôi cần: Tôi thêm một ngoại lệ Tuỳ chỉnh như: public class DwsWebServiceException kéo dài WebApplicationException { DwsWebServiceException công cộng (String nhắn, tình trạng int) { siêu (Response. trạng thái (trạng thái) .entity (message) .type (MediaType.TEXT_XML) .build()); } } và hiển thị thông báo. – jomaora