<value xsi:type="PQ" value="${(map.T_CDR_MEDICATION_ORDER.TOTAL_DOSAGE)!'0.00'}" unit="${(map.T_CDR_MEDICATION_ORDER.DOSAGE_UNIT)!'-'}"></value>要求非空的同事保留两位小数
时间: 2024-02-26 15:59:34 浏览: 27
您可以在value标签中使用Freemarker的内置指令,通过以下方式实现保留两位小数:
```
<value xsi:type="PQ" value="${(map.T_CDR_MEDICATION_ORDER.TOTAL_DOSAGE?string('0.00'))!'0.00'}" unit="${(map.T_CDR_MEDICATION_ORDER.DOSAGE_UNIT)!'-'}"></value>
```
在上面的指令中,使用了内置的`string`指令来将变量`map.T_CDR_MEDICATION_ORDER.TOTAL_DOSAGE`转换为字符串,并且指定了保留两位小数的格式`'0.00'`。如果该变量为null或空字符串,则使用默认值`'0.00'`。最终输出的结果应该是一个保留两位小数的数字字符串。
相关问题
@JacksonXmlProperty,@JacksonXmlRootElement注解形式解决<LevyBlAmt xsi:nil="true" /> <PackNo xsi:nil="true" /> <GrossWt xsi:nil="true" /> <NetWt xsi:nil="true" />此数据
是的,你可以使用 `jackson-dataformat-xml` 库来解析XML数据,并且使用 `@JacksonXmlProperty` 和 `@JacksonXmlRootElement` 注解来指定节点名称和根节点名称。以下是一个示例代码:
首先,需要在项目中引入 `jackson-dataformat-xml` 库的依赖:
```xml
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.13.0</version>
</dependency>
```
然后,创建一个Java类来表示你的XML数据:
```java
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
@JacksonXmlRootElement(localName = "root")
public class MyData {
@JacksonXmlProperty(localName = "LevyBlAmt")
private String levyBlAmt;
@JacksonXmlProperty(localName = "PackNo")
private String packNo;
@JacksonXmlProperty(localName = "GrossWt")
private String grossWt;
@JacksonXmlProperty(localName = "NetWt")
private String netWt;
// getters and setters...
}
```
在这个示例中,我们使用了 `@JacksonXmlRootElement` 注解来指定根节点名称,使用 `@JacksonXmlProperty` 注解来指定节点名称。在属性上使用 `@JsonProperty` 注解可以指定Java属性名与XML节点名称的映射关系。
最后,使用 `XmlMapper` 解析XML数据:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
public class XmlParser {
public static void main(String[] args) throws Exception {
String xml = "<root><LevyBlAmt xsi:nil=\"true\" />" +
"<PackNo xsi:nil=\"true\" />" +
"<GrossWt xsi:nil=\"true\" />" +
"<NetWt xsi:nil=\"true\" /></root>";
XmlMapper xmlMapper = new XmlMapper();
MyData data = xmlMapper.readValue(xml, MyData.class);
System.out.println(data.getLevyBlAmt()); // null
System.out.println(data.getPackNo()); // null
System.out.println(data.getGrossWt()); // null
System.out.println(data.getNetWt()); // null
}
}
```
在这个示例中,我们使用 `XmlMapper` 对象解析XML数据,并将XML数据转换成 `MyData` 对象。使用 `getLevyBlAmt()`、`getPackNo()`、`getGrossWt()`、`getNetWt()` 方法可以获取到节点的值。
<LevyBlAmt xsi:nil="true" /> <PackNo xsi:nil="true" /> <GrossWt xsi:nil="true" /> <NetWt xsi:nil="true" />怎么在java后端解析此数据
这段数据看起来像是XML格式,可以使用Java中的XML解析器来解析它。以下是一个基本的示例代码:
```java
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;
public class XMLParser {
public static void main(String[] args) {
try {
// 创建DOM解析器工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 创建DOM解析器
DocumentBuilder builder = factory.newDocumentBuilder();
// 解析XML文件
Document doc = builder.parse(new File("your_file.xml"));
// 获取根节点
Element root = doc.getDocumentElement();
// 获取子节点
NodeList nodeList = root.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
System.out.println(element.getTagName() + ": " + element.getTextContent());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在这个示例中,我们使用Java自带的DOM解析器来解析XML文件,并将结果输出到控制台。你需要将 `your_file.xml` 替换为你的XML文件路径。当然,如果你的XML数据是从网络请求中获取到的,你可以使用Java的网络请求库来获取数据,然后将数据传给DOM解析器进行解析。