我正在使用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库或正确的模式来做到这一点?
谢谢
答案 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
界面的示例。