Java EE 8 MVC:使用bean参数
在上一篇文章中,我們看到了如何在MVC Controller中訪問(wèn)query , path和form參數(shù) 。 這篇文章展示了如何使用@BeanParam批注將多個(gè)參數(shù)映射到一個(gè)對(duì)象。
讓我們重用關(guān)于表單參數(shù)的文章中的簡(jiǎn)單HTML表單:
<form?action="submit"?method="post"><label>ID:</label><input?type="text"?name="id"?/><label>Name:</label><input?type="text"?name="name"?/><label>Role:</label><select?name="role"><option?value="admin">Admin</option><option?value="reporter">Reporter</option><option?value="accountant">Accountant</option></select><input?type="submit"/> </form>這定義了一個(gè)簡(jiǎn)單的表單,其中包含兩個(gè)文本輸入字段和一個(gè)帶有三個(gè)選項(xiàng)的選擇菜單。
在上一篇有關(guān)表單參數(shù)的文章中 ,我們了解到可以通過(guò)使用@FormParam注釋控制器參數(shù)來(lái)訪問(wèn)這些參數(shù)。
但是,如果表單具有多個(gè)參數(shù),則此方法很麻煩。 在這些情況下,我們通常希望將表單參數(shù)映射到單獨(dú)的對(duì)象。 @BeanParams可以幫助我們做到這一點(diǎn)。
使用@BeanParam,我們可以編寫(xiě):
@POST @Path("submit") @Controller public String submit(@BeanParam User user) {// use user .. }User類(lèi)如下所示:
public class User {@FormParam("id")private long id;@FormParam("name")private String name;@FormParam("role")private Role role;// getters and setters }調(diào)用controller方法時(shí),將自動(dòng)創(chuàng)建User的新實(shí)例。 創(chuàng)建的對(duì)象的字段將使用傳遞的表單參數(shù)填充。
@BeanParam和其他參數(shù)注釋
與@BeanParam一起使用的類(lèi)不限于表單參數(shù)。 以前的博客文章中顯示的所有參數(shù)注釋( @QueryParam , @PathParam等)都可以在bean參數(shù)內(nèi)部使用。
例如:
@GET @Path("/date/{year}/{month}") public String get(@BeanParam RequestData data) {... }public class RequestData {@PathParam("year")private int year;@PathParam("month")private int month;@QueryParam("name")private String name;// getters and setters }如果我們現(xiàn)在將HTTP GET請(qǐng)求發(fā)送到
/date/2016/02?name=john值2016、2和john將被注入字段Year,month和RequestData名稱(chēng)。
快速總結(jié)
使用@BeanParam可以將請(qǐng)求參數(shù)注入bean。 如果您有多個(gè)參數(shù),這特別有用。 在bean參數(shù)內(nèi)部,可以使用所有其他參數(shù)注釋。
- 您可以在GitHub上找到示例源代碼。
翻譯自: https://www.javacodegeeks.com/2016/03/java-ee-8-mvc-working-bean-parameters.html
總結(jié)
以上是生活随笔為你收集整理的Java EE 8 MVC:使用bean参数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mvvm 自动绑定_ZK的实际应用:MV
- 下一篇: 属猴的守护神是什么菩萨(大日如来)