簡體   English   中英

如何在Java REST服務中驗證XML輸入的非空屬性?

[英]How to validate XML input not-null property in Java REST service?

我正在TomEE下運行該服務。

該模型非常簡單:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Card {

    @XmlElement(required = true, nillable = false)
    private String cardNumber;

    public Card() {
        //no-op
    }

    public Card(final String s) {
        cardNumber = s;
    }

    public String getCardNumber() {
        return cardNumber;
    }

    public void setCardNumber(String cardNumber) {
        this.cardNumber = cardNumber;
    }
}

我遵循了這個示例https://docs.oracle.com/javaee/7/tutorial/jaxrs-advanced008.htm

該服務也非常簡單,例如:

@Consumes(APPLICATION_XML)
@Produces(APPLICATION_XML)
public class MyService {
    @POST 
    @Path("status")
    public String queryStatus(Card card) {
        // do something 
    }
}

如果我的輸入格式錯誤,它將有適當的例外。 但是它似乎無法驗證空卡號或空值。

例如,當我有

"<card></card>" 

要么

"<card><cardNumber> </cardNumber></card>" 

(帶有空字符串),該服務仍然可以通過,“ cardNumber”屬性為null或為空。

好吧,我可以在二傳手中做些事情來拋出異常。 但是我希望JavaEE如果將注釋放在屬性上,則可以自動處理這種情況。

那我在這里想念什么? 謝謝您的提示!

使用Bean驗證( http://beanvalidation.org/),Java EE提供了一種驗證對象的標准方法。 它還與JAX RS集成在一起。

因此,您可以在Card類中使用@NotNull類的注釋。 在您的服務中,只需說您想要一張@Valid卡即可。

可以在此處找到示例: https : //jaxenter.com/integrating-bean-validation-with-jax-rs-2-106887.html

暫無
暫無

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

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