在前两篇文章中,我们了解了如何在即将到来的Java EE MVC框架中使用查询和路径参数 。 这篇文章重点介绍表单参数。
当您使用发布请求提交Web表单时,表单值将作为请求正文的一部分发送。 媒体类型(或内容类型)定义了用于在请求正文中存储值的格式。 Web表单通常使用媒体类型application / x-www-form-urlencoded。 可以使用@FormParam批注来访问使用此媒体类型发送的参数。
使用表单参数
假设我们具有以下简单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>
要处理表单值,我们可以使用以下控制器方法:
public enum Role {admin, reporter, accountant
}
@Controller
@Path("form-params")
public class FormParamsController {@POST@Path("submit")public String submitParams(@FormParam("id") long id,@FormParam("name") String name,@FormParam("role") Role role) {...}
}
使用@FormParam,表单参数可以自动映射到方法参数。 表单参数使用与查询或路径参数( 此处所述)相同的类型转换规则。 这使得将表单参数转换为基元,枚举或对象变得容易。
在字段和方法上使用@FormParam
像其他参数注释一样,@ FormParam可以用于注释字段和方法。
例如:
@Controller
@Path("form-params-fields")
public class FormParamsFieldController {@FormParam("id")private long id;@FormParam("role")private Role role;private String name;@FormParam("name")public void setNameField(String name) {this.name = name;}@POSTpublic String submitParams() {// use id, role, name}
}
在此示例中,提交的表单参数映射到字段(id,角色)和设置器(setNameField())。 然后在内部SubmitParams()中,我们可以简单地访问字段以获取表单参数。
快速总结
通过HTML表单提交的参数可以通过@FormParam获得。 像@QueryParam和@PathParam一样,可以使用@FormParam注释字段,方法和方法参数。
- 您可以在GitHub上找到所有示例的源代码。
翻译自: https://www.javacodegeeks.com/2016/02/java-ee-8-mvc-working-form-parameters.html