在Java后端中检查正确(和快速)参数

时间:2015-03-25 11:21:07

标签: java rest java-ee error-handling ejb

我正在使用Mybatis和EJB 3.1开发CRUD应用程序。这些EJB由JAX-RS Web服务调用。

在JAX中,我(显然)必须在调用EJB之前检查参数的正确性。

我做了类似的事情:

int codiCli = req.getParameter("codiCli") != null ? new Integer(
    req.getParameter("codiCli")).intValue() : 0;
int codiIndirizzo = req.getParameter("codiIndirizzo") != null ? new Integer(
    req.getParameter("codiIndirizzo")).intValue() : 0;
String indirizzo1 = req.getParameter("indirizzo1") != null ? req.getParameter("indirizzo1") : "";
if (codiCli <= 0 || !isValid(indirizzo1) || !isValid(localita) ) {
    response = this.createJsonErrorResp("updateIndirizzo", 1, 1002, "Parameters error").toString();
} else {
    try {
        InitialContext initialContext = new InitialContext();
        Object serviceObj = initialContext.lookup("java:comp/env/ejb/MngClientiDAOService");
        MngClientiDAOServiceRemote service = (MngClientiDAOServiceRemote) javax.rmi.PortableRemoteObject
                                .narrow((org.omg.CORBA.Object) serviceObj, MngClientiDAOServiceRemote.class);
        // ...
       }
     //... 
}

有没有更好的,可能更快的方法来做所有这些控制?也许有一个Java库或正确的模式来做到这一点?

谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用Bean Validation执行参数验证。看到: http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html

如果您使用的是JAX-RS Web服务,则可以通过将请求参数放在类似bean的User bean中来验证您的请求参数:

@POST
@Consumes("application/xml")
public void registerUser(@Valid User user) {
    ...
}

此处有更多示例:https://jersey.java.net/documentation/latest/bean-validation.html#d0e13587

如果您有更复杂的案例,也可以使用自定义验证器 - 请参阅实施ConstraintValidator界面的示例。