2017-07-27 24 views
0

我有一个方法getter和我包裹的getName与nameTransform方法,使其检查验证,我需要如何从包装方法检索DTO?

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); 
    } 

如何检索orderDTO在方法nameTransofm?当我在做

OrderDTO orderDTO = new OrderDTO(); 

它给我空指针异常

+0

你从哪里得到例外?请提供堆栈跟踪。 – Arpit

+0

当我在nameTransform方法中放置Order DTO orderDTO = new Order DTO()时,它给了我nullpointerexception –

+0

我怀疑当你试图访问'orderDTO.getName().length()'时,你会得到一个NullPointerException因为getName返回null。尝试调试并检查控件到达nameTransform方法时未收到DTO或name属性的原因 – Arpit

回答

0

时,我有正确理解您的意图,这应该做的伎俩:

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); 
} 

,但我不知道你为什么需要在最后一行递归

您的订单转换现在看起来像这样:

public InvoiceRequestDTO orderTransformer(OrderDTO orderDTO) { 
    return new InvoiceRequestDTO(nameTransform(orderDTO); 
} 
0

当您使用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'); 
    } 
}