Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SPEL用spring mvc填充DTO_Java_Spring_Spring Mvc - Fatal编程技术网

Java 使用SPEL用spring mvc填充DTO

Java 使用SPEL用spring mvc填充DTO,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有一个带有restful端点/小部件/{id}的web应用程序 此端点接受更新DTO并调用服务层来执行更新 我目前从JSON正文中提取更新的数据。但是,该服务需要的数据比JSON正文包含的数据更多,例如当前用户和URL中的id 当前,我的控制器方法如下所示 @RequestMapping(value = "/{id}", method = RequestMethod.PUT) public WidgetResponseDto update(@RequestBody WidgetUpdateDt

我有一个带有restful端点/小部件/{id}的web应用程序

此端点接受更新DTO并调用服务层来执行更新

我目前从JSON正文中提取更新的数据。但是,该服务需要的数据比JSON正文包含的数据更多,例如当前用户和URL中的id

当前,我的控制器方法如下所示

@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public WidgetResponseDto update(@RequestBody WidgetUpdateDto widgetUpdate,
                                    @PathVariable("id") Long id,
                                    @CurrentOrganisationId Long organisationId)
控制器的第一项工作是将这些数据转换成单个对象。然后在整个应用程序中重复此模式

我的问题是:如何从路径中获取参数,或者从
SecurityContext
直接在DTO中使用参数

理想情况下,我希望能够在我的业务对象中使用SPEL填充这些字段,同时使用Jackson填充其他字段


是否支持开箱即用?如果不是,我最好编写一个自定义的
HttpMessageConverter

您可以通过
@RequestHeader
注释访问请求头:

RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public WidgetResponseDto update(@RequestBody WidgetUpdateDto widgetUpdate,
                                @PathVariable("id") Long id,
                                @CurrentOrganisationId Long organisationId,
                                @RequestHeader("Host") String host,
                                @RequestHeader(""Keep-Alive"") String keepAlive)
请求头“主机”和“保持活动”将分别通过
Host
keepAlive
变量提供。
有关更多详细信息,请参见

谢谢,但这没有帮助。我希望能够将path变量直接注入我的WidgetUpdateDto,而不是控制器方法。您能显示方法体吗?或者您在WidgetUpdatedTo中注入请求参数的方式是否为else?此时,我创建了一个新对象,该对象将来自dto的字段以及请求参数值和orgId mung到单个对象中,就像第一次想到该方法一样。例如,新建WidgetUpdate(WidgetUpdate.name、WidgetUpdate.type、id、OrganizationId)。或者,我也可以在Dto上使用setter来实现同样的目的。