如何从包装器方法中检索DTO?

时间:2017-07-27 13:48:01

标签: java string return dto

我有一个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();

它给我空指针异常

2 个答案:

答案 0 :(得分: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);
}

但我不确定为什么你需要在最后一行递归

您的orderTransform现在看起来像这样:

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

答案 1 :(得分:0)

当你使用new OrderDto()时,它没有名称字段,这就是为什么你得到nullpointer。

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