循环遍历List对象(List <message> messageTobeSent)以将值添加到其中一个对象属性

时间:2017-08-07 18:25:01

标签: java spring arraylist

我有一个模型类消息

public class LetterMessage implements Serializable{
 private static final long serialVersionUID = 1L;

private String variableName;
private short variableId;
private Integer dataType;
private Integer isRequired;
private String value;

    public LetterMessage() {
    super();
}


public LetterMessage(String variableName,String value) {
    super();
    this.variableName = variableName;
    this.value = value;
}


public LetterMessage(String variableName, short variableId,
                     Integer dataType, Integer isRequired, String value) {
    super();
    this.variableName = variableName;
    this.variableId = variableId;
    this.dataType = dataType;
    this.isRequired = isRequired;
    this.value = value;
}

}

对于给定的消息,可以有多个变量名称,如: 对于消息= 101

VariableName: Address, AccountID, UniqueIdentifier.
VariableID: 001, 002, 003.
DatatypeID: 2, 1, 3.
isRequired: 1, 0, 1.
Value: ?, ?, ?.

我从另一个类的数据库中获取VariableName,DataType。

这个for循环获取消息ID的变量,并将所有内容插入到LetterMessage列表对象中。

@Service
public class LetterRecoveryValidator {

List<CorrespondenceLetterVariableLog> letterDataHooks = correspondenceLetterVariableLogDao.findByLetterTypeId(letterTypeId);

List<LetterMessage> allDataHooks = new ArrayList<>();

for(CorrespondenceLetterVariableLog letterDataHook: letterDataHooks) {
        LetterMessage datahook = new LetterMessage();
        datahook.setVariableId(letterDataHook.getCorrespondenceVariableLookup().getVariableId());
        datahook.setVariableName(letterDataHook.getCorrespondenceVariableLookup().getVariableName());
        datahook.setDataType(letterDataHook.getCorrespondenceVariableLookup().getCorrespondenceVariableDataTypeLookup().getLetterDataTypeId());
        datahook.setIsRequired(letterDataHook.getCorrespondenceVariableLookup().getVariableRequiredIndicator());
        allDataHooks.add(datahook);
    }
return allDataHooks;
}

这个LetterRecoveryValidator是一个独立的类。我不应该对它进行任何更新来增加价值。

我必须使用输出并在我身边添加值。

我在我的主要课程中调用它,如下面的

List<LetterMessage> letterToBeSent = new ArrayList<>();

letterToBeSent=(letterRecoveryValidator.getLetterDataHooks(fulfillmentOption.getTemplateId()));

上述步骤不会在Value属性中包含任何数据 它看起来如下所示。

[LetterMessage [variableName=Address, variableId=001, dataType=2, isRequired=1, value=null], 
LetterMessage [variableName=RTLtr_CustomerAddress2, variableId=29, dataType=2, isRequired=1, value=null], 
LetterMessage [variableName=RTLtr_CustomerCity, variableId=30, dataType=2, isRequired=1, value=null], 
LetterMessage [variableName=RTLtr_CustomerState, variableId=33, dataType=2, isRequired=1, value=null], 
LetterMessage [variableName=RTLtr_CustomerZip, variableId=34, dataType=7, isRequired=1, value=null], 
LetterMessage [variableName=RTLtr_CoBorrowerName, variableId=78, dataType=2, isRequired=0, value=null]] 

我需要将数据添加到Value属性。

我试过

letterToBeSent.add(new LetterMessage(MessageConstant.Address,"1243 WindHeaven Pkwy"));

这里是我从数据库中检索的GetAccountID()

letterToBeSent.add(new LetterMessage(MessageConstant.AccountID,GetAcctID()));

letterToBeSent.add(new LetterMessage(MessageConstant.UniqueIdentifier,UUID.randomUUID().toString()));

因为我是,使用&#34;新的LetterMessage&#34;每次我添加值时,它都会添加包含所有属性的新记录。

但是我希望它在Value属性中插入值而不是创建新实例。

1 个答案:

答案 0 :(得分:0)

将所有字段设置为实体时,您缺少“value”属性。试试这个:

for(CorrespondenceLetterVariableLog letterDataHook: letterDataHooks) {
            LetterMessage datahook = new LetterMessage();
            datahook.setVariableId(letterDataHook.getCorrespondenceVariableLookup().getVariableId());
            datahook.setVariableName(letterDataHook.getCorrespondenceVariableLookup().getVariableName());
            datahook.setDataType(letterDataHook.getCorrespondenceVariableLookup().getCorrespondenceVariableDataTypeLookup().getLetterDataTypeId());
            datahook.setIsRequired(letterDataHook.getCorrespondenceVariableLookup().getVariableRequiredIndicator());

            // Here is the fix:
            datahook.setValue(letterDataHook.getCorrespondenceVariableDataTypeLookup().getValue());

            allDataHooks.add(datahook);

            return allDataHooks;
    }