我有一个简单的核心java问题。我有一个包含多个响应代码的列表。我根据列表中的响应代码返回消息。对于其中一个场景,我必须检查列表中是否包含任何一个响应代码。我已经通过以下方式完成了它,但它忽略了它,代码转到了else块。因此,如果代码是ES03或ES04或其中任何一个,我想填充emailValidationMessage变量,但它不会这样做。
List<String> messageCodes = this.getEmailValidationCode( eSignatureInTO );
if( messageCodes.contains( "ES01" ) ) {
IESignatureIntegrationOutDto eSignatureOutTO = getEsignService().resendDocuments( eSignatureInTO );
eSignatureInTO.setResendDocs( eSignatureOutTO.isResendDocs() );
} else if( messageCodes.contains( "EE01" ) ) {
emailValidationMessage = UiIntegrationKeyConstants.EMAIL_FORMAT_ERROR_MESSAGE;
} else if( messageCodes.contains( Arrays.asList( "ES02", "ES03", "ES04", "EE02", "EE03", "EE04" ) ) ) {
emailValidationMessage = UiIntegrationKeyConstants.EMAIL_VALIDATION_ERROR_MESSAGE;
} else {
emailValidationMessage = UiIntegrationKeyConstants.EMAIL_VALIDATION_MESSAGE;
}
谢谢...
答案 0 :(得分:2)
更改包含表达式:
List<String> messageCodes = this.getEmailValidationCode( eSignatureInTO );
if( messageCodes.contains( "ES01" ) ) {
IESignatureIntegrationOutDto eSignatureOutTO = getEsignService().resendDocuments( eSignatureInTO );
eSignatureInTO.setResendDocs( eSignatureOutTO.isResendDocs() );
} else if( messageCodes.contains( "EE01" ) ) {
emailValidationMessage = UiIntegrationKeyConstants.EMAIL_FORMAT_ERROR_MESSAGE;
} else if( !Collections.disjoint(messageCodes,Arrays.asList( "ES02", "ES03", "ES04", "EE02", "EE03", "EE04" ) ) ) {
emailValidationMessage = UiIntegrationKeyConstants.EMAIL_VALIDATION_ERROR_MESSAGE;
} else {
emailValidationMessage = UiIntegrationKeyConstants.EMAIL_VALIDATION_MESSAGE;
}
Collections.disjoint
充当&#34;包含任何&#34;比较。这样,如果存在一个或多个错误代码,它将进入if子句。
答案 1 :(得分:1)
因此,如果代码是ES03或ES04或我想要的任何一个 填充emailValidationMessage变量但不执行此操作。
你不应该这样做:
if( messageCodes.contains("ES03") || messageCodes.contains("ES04")) {
emailValidationMessage = "whatever your value should be";
}
答案 2 :(得分:1)
在第二个if中,你要问的是String数组中是否存有 list 。那不行。您应该为要查找的每个值执行.contains
。