如何从包装器方法中检索 DTO?
How to retrieve DTO from wrapper method?
我有一个 getter 方法,我用 nameTransform 方法包装 getName 以使其检查我需要的验证
public InvoiceRequestDTO orderTransformer(OrderDTO orderDTO) {
return new InvoiceRequestDTO(nameTransform(orderDTO.getName());
}
以及一种检查方法
private String nameTransform(String name) {
if (orderDTO.getName().length() < 1) {
orderDTO.setName("0000" + orderDTO.getName());
}
if (orderDTO.getName().length() < 2) {
orderDTO.setName("000" + orderDTO.getName());
}
if (orderDTO.getName().length() < 3) {
orderDTO.setName("00" + orderDTO.getName());
}
if (orderDTO.getName().length() < 4) {
orderDTO.setName("0" + orderDTO.getName());
}
else orderDTO.getName();
return nameTransform(name);
}
如何在方法 nameTransofm 中检索 orderDTO?当我在做的时候
OrderDTO orderDTO = new OrderDTO();
它给了我空指针异常
当我正确理解您的意图后,这应该可以解决问题:
private String nameTransform(OrderDTO orderDTO) {
String name = orderDTO.getName();
String newName;
int length = name.length();
if (length < 1) {
newName = "0000" + name;
}
if (length < 2) {
newName = "000" + name;;
}
if (length < 3) {
newName = "00" + name;
}
if (length < 4) {
newName = "0" + name;
} else {
return name;
}
orderDTO.setName(newName);
return nameTransform(orderDTO);
}
但我不确定你为什么需要最后一行的递归
您的 orderTransform 现在看起来像这样:
public InvoiceRequestDTO orderTransformer(OrderDTO orderDTO) {
return new InvoiceRequestDTO(nameTransform(orderDTO);
}
当您使用 new OrderDto()
时,它没有名称字段,这就是您获得空指针的原因。
return new InvoiceRequestDTO(OrderDto.nameFormatted());
class OrderDto {
....
public String nameFormatted(){
// check name
if(this.name == null) {
return "";
}
return String.format("%4s", this.name).replace(' ', '0');
}
}
我有一个 getter 方法,我用 nameTransform 方法包装 getName 以使其检查我需要的验证
public InvoiceRequestDTO orderTransformer(OrderDTO orderDTO) {
return new InvoiceRequestDTO(nameTransform(orderDTO.getName());
}
以及一种检查方法
private String nameTransform(String name) {
if (orderDTO.getName().length() < 1) {
orderDTO.setName("0000" + orderDTO.getName());
}
if (orderDTO.getName().length() < 2) {
orderDTO.setName("000" + orderDTO.getName());
}
if (orderDTO.getName().length() < 3) {
orderDTO.setName("00" + orderDTO.getName());
}
if (orderDTO.getName().length() < 4) {
orderDTO.setName("0" + orderDTO.getName());
}
else orderDTO.getName();
return nameTransform(name);
}
如何在方法 nameTransofm 中检索 orderDTO?当我在做的时候
OrderDTO orderDTO = new OrderDTO();
它给了我空指针异常
当我正确理解您的意图后,这应该可以解决问题:
private String nameTransform(OrderDTO orderDTO) {
String name = orderDTO.getName();
String newName;
int length = name.length();
if (length < 1) {
newName = "0000" + name;
}
if (length < 2) {
newName = "000" + name;;
}
if (length < 3) {
newName = "00" + name;
}
if (length < 4) {
newName = "0" + name;
} else {
return name;
}
orderDTO.setName(newName);
return nameTransform(orderDTO);
}
但我不确定你为什么需要最后一行的递归
您的 orderTransform 现在看起来像这样:
public InvoiceRequestDTO orderTransformer(OrderDTO orderDTO) {
return new InvoiceRequestDTO(nameTransform(orderDTO);
}
当您使用 new OrderDto()
时,它没有名称字段,这就是您获得空指针的原因。
return new InvoiceRequestDTO(OrderDto.nameFormatted());
class OrderDto {
....
public String nameFormatted(){
// check name
if(this.name == null) {
return "";
}
return String.format("%4s", this.name).replace(' ', '0');
}
}