当前位置: 首页 > 知识库问答 >
问题:

如何在MapStruct的表达式中添加空格

欧阳正谊
2023-03-14

我需要将源中的firstName和lastName添加到目标中的fullName。我先要

我的源和目标类-

public class Source {
    private int id;
    private String firstName;
    private String lastName;
    private List<String> addressList;
}

public class Target {
    private int id;
    private String fullName;
    private String city;
}

这是我的映射器接口-

@Mapper
public interface SourceTargetMapper {

    SourceTargetMapper INSTANCE = Mappers.getMapper(SourceTargetMapper.class);

    @Mapping(expression = "java(source.getFirstName()+source.getLastName())", target = "fullName")
    @Mapping(expression = "java(source.getAddressList().get(0))", target = "city")
    Target sourceToTarget(Source source);

    @InheritInverseConfiguration
    Source targetToSource(Target target);
}

在中间加空格会给我带来错误-

@Mapping(expression = "java(source.getFirstName()+" "+source.getLastName())", target = "fullName")

是否有任何其他解决方案或方法?

共有2个答案

张姚石
2023-03-14

我发现了另一种通过使用装饰器模式来编写映射的方法,正如在地图结构留档中提到的那样。

我将在这里复制粘贴链接和示例。

https://mapstruct.org/documentation/dev/reference/html/#customizing-使用装饰器的映射器

下面是取自mapstruct文档的代码-

@Mapper
@DecoratedWith(PersonMapperDecorator.class)
public interface PersonMapper {

    PersonMapper INSTANCE = Mappers.getMapper( PersonMapper.class );

    PersonDto personToPersonDto(Person person);

    AddressDto addressToAddressDto(Address address);
}


public abstract class PersonMapperDecorator implements PersonMapper {

    private final PersonMapper delegate;

    public PersonMapperDecorator(PersonMapper delegate) {
        this.delegate = delegate;
    }

    @Override
    public PersonDto personToPersonDto(Person person) {
        PersonDto dto = delegate.personToPersonDto( person );
        dto.setFullName( person.getFirstName() + " " + person.getLastName() );
        return dto;
    }
}
梁渊
2023-03-14

您将需要转义引用"

例如

@Mapping(expression = "java(source.getFirstName()+ \" \" +source.getLastName())", target = "fullName")
 类似资料:
  • 我有以下代码: 代码JS: 运行此代码后,具有以下形式 我想在最后一个括号前添加空格,如下例所示。 您能告诉我如何接受对代码的更改,以便保留空白吗? 提前感谢! 编辑: 我添加了这个代码来调用这里作为添加空白。。。

  • 问题内容: 我遇到过这种模式 并从http://gskinner.com/RegExr/站点了解到= =匹配字母数字字符和下划线,并且=匹配先前的令牌1次或多次(不确定确切的含义)。 如何将连字符添加到列表中? 我试过了但是没用,我没有任何匹配… 问题答案: 您需要一个字符类,用表示。然后可以在字符类中使用它,并可以添加更多字符: 不过请小心,如果您添加更多字符以进行匹配。连字符减号必须在类中的

  • 如何解析和添加两个值?我使用这种模式: 包括间距,我需要得到“13” 使用正则表达式是可能的,还是有其他方法可以轻松实现这一点? 提前感谢你的帮助。

  • 我想将css文件链接到我的应用程序。在我的fxml文件中,我使用以下命令: ...当我在scenebuilder中打开fxml文件时,我可以看到一个样式化的预览。但是,当我尝试运行应用程序时,出现了一个错误: java.net.MalformedURL异常:无协议:.../stylesheet1.css 所以我用这种方法测试它: 现在它是反过来的-应用程序启动并应用css,但我没有看到场景构建器中

  • 我需要添加一些空间开始的第一项和结束的最后一项的回收,所以他们可以滚动到屏幕的边缘(因为他们不能与回收器视图的边距或填充) 问题是项目之间的间距应该不同,所以我不能只是将这个“空间”添加到项目布局中。现在,我正试图将ItemEdition添加到我的回收器中,但结果就是这样: 在我触摸它之前,行间距随机出现:随机行间距 然后,当我滚动到最后并返回时,所需的空间出现在屏幕上适合的最后一项之后,而不是在

  • 问题内容: 如何使用exec.command启动带有空格的文件?添加引号似乎无效,“或%20代替空格也不起作用。 问题答案: 这有效,但仅在Windows中

  • 问题内容: 我是Java新手。作为.Net开发人员,我非常习惯Regex.Net中的类。Regex(正则表达式)的Java实现不错,但是缺少一些关键功能。 我想为Java创建自己的帮助程序类,但我想也许已经有一个可用的类了。那么,有没有免费的,易于使用的Java正则表达式产品可用,还是我应该自己创建一个? 如果我要编写自己的课程,您认为我应该在哪里共享该课程,以供其他人使用? [编辑] 有人抱怨我

  • 我使用的是PHP,但对正则表达式不是很好。我需要一个preg_替换,如果字母或数字相邻,可以添加空格。 这些是场景: 谢谢