我无法从列表映射器(字符串公司)向对象映射器传递一些公共参数
@Mapper
public abstract class EmployeeMapper {
public abstract Employee getEmployeeFromDTO(EmployeeDTO employeeDTO, String
company);
@AfterMapping
public void addCompany(@MappingTarget Employee employee, String company) {
employee.setCompany(company);
}
public abstract List<Employee> getEmployeeFromDTOs(List<EmployeeDTO> employeeDTOs,
String company);
}
起初,我使用的是接口而不是抽象类。而且没有@AfterMapping方法。事实上,我不知道如何正确地将其作为String公司@Context传递。有没有@Context和@AfterMapping,或者至少有它,所以我的问题是,当列表映射器getEmployeeFromDTO按顺序调用“item”mapper getEmployeeFromDTO时,如何传递“String company”。如果它被传递到最后一种方法,我会很容易地将常见的“公司”映射到员工,@Mapping因为 EmployeeDTO 没有这样的数据。我想另一种方法是使用@Context和@AfterMapping。在这种情况下,我应该把@AfterMapping方法放在相对映射方法之前还是之后?我是否应该将@AfterMapping方法放在 Employee/EmployeeDTO 类中?
以下是我的解决方案:
类别:
public class Message {
private String level;
private List<MessageData> messages;
}
public class MessageData {
private String appId;
private long dateCreated;
private String type;
}
public class Event {
private String type;
private String processId;
private List<EventData> events;
}
public class EventData {
private String name;
private long dateCreated;
}
解决方案#1:使用上下文
@Mapper
public interface MessageMapper2 {
@Mapping(target = "level", constant = "MEDIUM")
@Mapping(target = "messages", source = "event", qualifiedByName = "mapEventsToMessages")
Message mapEvenToMessage(Event event, @Context String progressId);
List<MessageData> mapEventsToMessages(List<EventData> events, @Context String progressId);
@Mapping(target = "type", source = "name")
@Mapping(target = "appId", expression = "java(progressId)")
MessageData mapEventDataToMessageData(EventData eventData, @Context String progressId);
}
解决方案#2:如果属性在源对象内部,这个解决方案将会工作
消息数据。appId=event.processId
@Mapper
public interface MessageMapper {
@Mapping(target = "level", constant = "MEDIUM")
@Mapping(target = "messages", source = "event", qualifiedByName = "mapEventsToMessages")
Message mapEvenToMessage(Event event);
@Named("mapEventsToMessages")
default List<MessageData> mapEventsToMessages(Event event) {
return event.getEvents().stream()
.map(eventData -> new MessageData(event.getProcessId(), eventData.getDateCreated(), eventData.getName()))
.collect(Collectors.toList());
}
}
我的RestController中有如下API方法 类如下所示。 在postman中,我传递了一个JSON字符串,如 我得到一个错误说 2021-08-16 18:25:53.953警告4164---[io-8080-exec-10]. w. s. m. s.DefaultHandlerExceptionResolver:已解决[org.springframework.http.converter
例如,我有以下接口映射器: 在代码中,您可以看到映射和一些默认方法,其中包含其他映射。如何在Mapstruct映射中使用这些方法,以便Mapstruct使用这些方法在字段中填充值?
我们有两个相关的下拉列表,其中一个下拉列表的结果与另一个下拉列表相关。 我们定义了一个映射,以映射的形式选择什么,如下所示; 根据上面的地图,当选择“DS”时,我们希望显示“Ärray”和“LL”。其他映射的情况也类似。 我将此映射传递给JSP,并使用JSTL呈现选项。在决定调用JS来填充后续下拉列表时,我想将其更改为JSON。 我想把选定选项的特定映射传递给JS方法,并填充后续的下拉列表。 转换
是否有一种方法可以将封闭的对象引用作为参数传递给映射方法? 在自定义方法中映射person对象时,我需要一个对包围的car对象的引用。
下面是我的DTO。 源DTO 目标DTO
正如我在这篇文章中看到的,我正试图从YAML文件创建一个服务器对象列表,但是使用Micronaut。 我的YAML文件具有以下配置: 我的POJO是: 我的服务是: 我在系统上设置了一个断点。出来println行并以调试方式启动应用程序,但什么也没发生。 我需要做任何额外的配置吗?