Làm thế nào để xử lý null
các giá trị trong Freemarker? Tôi nhận được một số ngoại lệ trong mẫu khi null
các giá trị có trong dữ liệu.
Câu trả lời:
Bạn có thể sử dụng ??
toán tử kiểm tra:
Điều này kiểm tra xem thuộc tính của đối tượng không phải là null:
<#if object.attribute??></#if>
Điều này kiểm tra nếu đối tượng hoặc thuộc tính không phải là null:
<#if (object.attribute)??></#if>
Nguồn: FreeMarker Manual
has_content
, bên cạnh kiểm tra null, cũng kiểm tra nếu giá trị không trống. Điều này hoạt động cho các chuỗi, chuỗi, băm hoặc tập hợp. Nếu đối tượng là một ngày tháng, boolean hoặc một số, thì đối tượng đó sẽ hoạt động như không rỗng. Đối với tất cả các loại khác, nó sẽ hoạt động như trống.
Bắt đầu từ freemarker 2.3.7, bạn có thể sử dụng cú pháp này :
${(object.attribute)!}
hoặc, nếu bạn muốn hiển thị văn bản mặc định khi thuộc tính là null
:
${(object.attribute)!"default text"}
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.22</version></dependency>
vào pom.xml của bạn.
${(object.dateAcquired?date)!"not present"}
${salutation!'Dear Mr. or Mrs.'}
Tôi nghĩ nó hoạt động theo cách khác
<#if object.attribute??>
Do whatever you want....
</#if>
Nếu object.attribute
KHÔNG ĐẦY ĐỦ, thì nội dung sẽ được in.
Sử dụng ??
toán tử ở cuối <#if>
câu lệnh của bạn .
Ví dụ này trình bày cách xử lý null
các giá trị cho hai danh sách trong mẫu Freemaker.
List of cars:
<#if cars??>
<#list cars as car>${car.owner};</#list>
</#if>
List of motocycles:
<#if motocycles??>
<#list motocycles as motocycle>${motocycle.owner};</#list>
</#if>