1

次のコードでは、null 以外のすべての値について、setOriginatingNumber を null にリセットしています。

if (config.getOriginPhoneNumber() != null) {
                PhoneNumber originphoneNumber = new PhoneNumber();
                config.setOriginatingNumber(formatPhoneNumber(originphoneNumber));
}

空白の電話番号にリセットされます。これにより、複数の問題が発生する可能性があります。このシナリオは、ユーザーが既存の電話番号の値を編集して英数字に変更した場合にのみ存在します。

config.getOriginPhoneNumber() の null 以外の値ごとに、コードが空白の電話番号に設定されていることを確認する方法

public SmsChannelConfig applyTo(
            final SmsChannelConfigRepository repository,
            final UserContext context, final ModuleRepository moduleRepository) {
        final SmsChannelConfig config;
        if (source == null) {
            config = new SmsChannelConfig(context);
        } else {
            config = source;
        }
        super.applyTo(repository, config);
        if (!Strings.isNullOrEmpty(getOriginatorType())
                && "Number".equals(getOriginatorType())) {
            PhoneNumber originphoneNumber = new PhoneNumber();
            originphoneNumber.setNumber(getPhoneNumber());
            originphoneNumber.setCountryCode(getCountryCode());
            config.setOriginPhoneNumber(originphoneNumber);
            config.setOriginatingNumber(formatPhoneNumber(originphoneNumber));
            config.setOriginText(null);
        } else {
            config.setOriginText(getOriginator());
            if (config.getOriginPhoneNumber() != null) {
                PhoneNumber originphoneNumber = new PhoneNumber();
                config.setOriginatingNumber(formatPhoneNumber(originphoneNumber));
            }
        }
        config.setOperator(getOperator());
        if (!Strings.isNullOrEmpty(getOperator())) {
            List<ExternalResource> resources = SmsChannelConfigUtil
                    .getSmsProviders(moduleRepository, context);
            for (ExternalResource resource : resources) {
                if (getOperator().equals(resource.getId().getResourceName())) {
                    config.setOperatorName(resource.toString());
                }
            }
        }
        config.setDescription(getDescription());
        config.setName(getName());
        if (repository.query().all().isEmpty()) {
            repository.setDefault(context.getOrganization(), config);
        }
        return config;
    }

複数の問題が発生しないように、getOriginatorType() が「Number」と等しくない場合にのみ、originphoneNumber の値を null にリセットします。

4

2 に答える 2

2

交換:

if (config.getOriginPhoneNumber() != null) {
                PhoneNumber originphoneNumber = new PhoneNumber();
                config.setOriginatingNumber(formatPhoneNumber(originphoneNumber));
}

と:

if (config.getOriginPhoneNumber().matches("^.*[\\w+].*$") {
                PhoneNumber originphoneNumber = new PhoneNumber();
                config.setOriginatingNumber(formatPhoneNumber(originphoneNumber));
}

電話番号が英数字かどうかを確認します。文字のみをテストする場合は、次[\\w+]を置き換える必要があります。[a-zA-Z]+

于 2013-10-23T06:55:37.247 に答える
1

ifブロックを変更します。

if (!Strings.isNullOrEmpty(getOriginatorType())
                && "Number".equals(getOriginatorType())) {

これに:

if (!Strings.isNullOrEmpty(getOriginatorType()){
    if("Number".equals(getOriginatorType())){
            PhoneNumber originphoneNumber = new PhoneNumber();
            originphoneNumber.setNumber(getPhoneNumber());
            originphoneNumber.setCountryCode(getCountryCode());
            config.setOriginPhoneNumber(originphoneNumber);
            config.setOriginatingNumber(formatPhoneNumber(originphoneNumber));
            config.setOriginText(null);
    } else {
            // RESET originphoneNumber value to null
    }
}
于 2013-10-23T07:01:01.533 に答える