BeanParamアノテーション
【前提条件】
[参考資料]
JavaEE7 JavaDoc
Java(TM) EE 7 Specification APIs
JAX-RS2.0 仕様書
The Java Community Process(SM) Program - communityprocess - final
【概要】
今回はJAX-RS2.0で追加されたBeanParamアノテーションについてです。
パラメータを受け取る際にはFormParamアノテーションなどを使用していましたが、
BeanParamアノテーションはBeanでパラメータを受け取れます。
【ソース】
[Bean]
import javax.ws.rs.FormParam; public class ParamBean { @FormParam("firstName") private String firstName = null; @FormParam("lastName") private String lastName = null; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }
普通のJavaBeanにFormParamアノテーションを付与しただけです。
[リソースクラス]
import javax.validation.ConstraintViolation; import javax.validation.Validator; import javax.ws.rs.BeanParam; import javax.ws.rs.Path; import javax.ws.rs.core.Response; import jp.glory.resources.bean.ParamBean; @Path("/BeanParam") public class BeanParamResource { @POST public Response postExecute(@BeanParam ParamBean bean) { final StringBuilder builder = new StringBuilder(); builder.append("<html>"); builder.append("<head>"); builder.append("<title>Validation</title>"); builder.append("</head>"); builder.append("<body>"); builder.append("<div>firstName : ").append(bean.getFirstName()).append("</div>"); builder.append("<div>lastName : ").append(bean.getLastName()).append("</div>"); builder.append("</body>"); builder.append("</html>"); return Response.ok(builder.toString()).build(); } }
実行されるメソッドのパラメータにBeanを指定し、
パラメータにjavax.ws.rs.BeanParamアノテーションを付与します。
今まではリソースクラスにFormParamアノテーションなどを
付与して取得していました。
BeanParamアノテーションを使用することにより、
Beanの各プロパティに値がインジェクションされます。