Java 在函数中放置参数的正确方法
我有一个巨大的表单,有大约30个参数,我认为做我通常做的事情不是一个好主意。 表单将被序列化,并通过ajax post将所有参数传递给spring控制器 我通常这样做:Java 在函数中放置参数的正确方法,java,spring,Java,Spring,我有一个巨大的表单,有大约30个参数,我认为做我通常做的事情不是一个好主意。 表单将被序列化,并通过ajax post将所有参数传递给spring控制器 我通常这样做: @RequestMapping(value = "/save-state", method = RequestMethod.POST) public @ResponseBody void deleteEnvironment(@RequestParam("environmentName") String environmentN
@RequestMapping(value = "/save-state", method = RequestMethod.POST)
public @ResponseBody
void deleteEnvironment(@RequestParam("environmentName") String environmentName, @RequestParam("imageTag") String imageTag) {
//code
}
@RequestMapping(value = "/save-state", method = RequestMethod.POST)
public void deleteEnvironment(@RequestBody MyData data) {
//code
}
但是如果我有30个参数,我会在函数中有一个巨大的参数列表
避免这种情况的通常正确方法是什么
编辑:如果我只传递HttpServlet请求怎么办??请求将包含所有参数,我可以简单地调用request.getParameters(“”)。
但是如果我有30个参数,我会在
功能
在您的请求中,传递一个包含这些信息的JSON对象,并用Java创建对应对象。RequestMethod.POST
不是为执行删除而设计的。Usr而不是
请求方法。删除
@RequestMapping(value = "/save-state", method = RequestMethod.DELETE)
public @ResponseBody
void deleteEnvironment(MyObject myObject) {
//code
}
正确的方法是将所有参数序列化为Json,并使用一个参数调用后端api
在后端,获取json并将其解析为对象。
示例:
` @RequestMapping(method = POST, path = "/task")
public Task postTasks(@RequestBody String json,
@RequestParam(value = "sessionId", defaultValue = "-1") Long sessionId)
throws IOException, AuthorizationException {
Task task = objectMapper.readValue(json, Task.class);
`
您可以这样做:
@RequestMapping(value = "/save-state", method = RequestMethod.POST)
public @ResponseBody
void deleteEnvironment(@RequestParam("environmentName") String environmentName, @RequestParam("imageTag") String imageTag) {
//code
}
@RequestMapping(value = "/save-state", method = RequestMethod.POST)
public void deleteEnvironment(@RequestBody MyData data) {
//code
}
创建一个包含所有表单参数的类,并在方法上接收这些参数。我建议有两个选项:
获取一个HttpServletRequest
对象并分别获取所需的属性。
问题在于Spring的控制器设计用于消除此类低级API(Servlets API)调用。如果控制器过于抽象(在抽象数据集上操作),这可能是合适的,这意味着您将无法使用固定长度的参数数定义DTO
使用所需的属性构造DTO类,并将其作为参数。
优点是您完全将低级工作委托给Spring,只关心您的应用程序逻辑。创建一个包含所有必需参数的bean类,并在controller方法中使用它。您能举一个简单的例子吗?我不习惯这样做。如果我只传递HttpServlet请求呢??请求将包含所有参数,我可以简单地调用request.getParameters(“”)。我可以正常地在ajax文章中传递序列化数据吗?我以前使用HttpServletRequest做过,它比DTO对象更简单,代码更少。我想我会使用它。请注意,使用DTO可以更容易地使用验证。这并不重要,因为我有一个删除东西的功能