将动态值类型 Date 传递到 tSOAP Message

问题描述 投票:0回答:1

我想通过使用全局变量将这种格式“yyyy-MM-dd”(例如:2023-09-06)的值类型日期传递给 tSOAP 消息,但不成功。它总是给我这个值

Wed Sep 06 00:00:00 CEST 2023
而不是这个值
2023-09-06
。 这是我的工作(测试):

enter image description here

因此,在这项工作中,我将把最后一次执行工作的日期存储在 csv 文件中。然后在作业开始时,我会将此值分配给全局变量,以便可以将其传递给 tSOAP 消息。 这是我在 tJavaFlex_1 中的代码:

// start part of your Java code
System.out.println("Date last update:");

//Déclaration des variables qui stockent la date de dernière update
String str_date_last_update;
Date dat_date_last_update;

//Maintenant on attribue les bonnes valeurs aux variables
str_date_last_update = row8.contenu;
dat_date_last_update = TalendDate.parseDate("yyyy-MM-dd", str_date_last_update);


//Enfin on expose les variables locales commes des variables global pour pouvoir les réutiliser
globalMap.put("dat_date_last_update", dat_date_last_update);
globalMap.put("str_date_last_update", str_date_last_update);

System.out.println("End of file");
System.out.println((String)globalMap.get("str_date_last_update"));
System.out.println((Date)globalMap.get("dat_date_last_update"));

因此,对于代码

System.out.println((String)globalMap.get("str_date_last_update"));
会给我这个值 2023-09-06 而这个代码
System.out.println((Date)globalMap.get("dat_date_last_update"));
给我这个值 Wed Sep 06 00:00:00 CEST 2023 。但我需要传递一个 Date 类型的值,该值是 2023-09-06。因为如果不这样做,我总是会收到不好的回应。

这是我的 tSOAP 消息(简化):

"<soap:Envelope ...
               <!--- type date with restriction pattern([0-9]{4}-[0-9]{2}-[0-9]{2}):-->
               <LowerBoundaryDate>" +(Date)globalMap.get("dat_date_last_update") + "</LowerBoundaryDate>
               <UpperBoundaryDate>2023-09-06</UpperBoundaryDate>
            </SelectionByChangedSinceDate>
      ....  
</soap:Envelope>" 

我尝试在 tSOAP 消息中传递此代码,但没有成功:

"<soap:Envelope ...
               <!--- type date with restriction pattern([0-9]{4}-[0-9]{2}-[0-9]{2}):-->
               <LowerBoundaryDate>" + TalendDate.parseDate("yyyy-MM-dd", (String)globalMap.get("str_date_last_update")) + "</LowerBoundaryDate>
               <UpperBoundaryDate>2023-09-06</UpperBoundaryDate>
            </SelectionByChangedSinceDate>
      ....  
</soap:Envelope>" 
soap talend
1个回答
0
投票

您的所有肥皂信封都被评估为字符串(请参阅开始/结束处的双引号)。所以我想在你的元素中传递

((String)globalMap.get("str_date_last_update"))
应该可以解决问题。无需将值作为日期传递。

© www.soinside.com 2019 - 2024. All rights reserved.