Eu tenho um modelo Freemarker que contém um monte de espaços reservados para os quais os valores são fornecidos quando o modelo é processado. Quero incluir condicionalmente parte do modelo se a variável userName for fornecida, algo como:
[#if_exists userName]
Hi ${userName}, How are you?
[/#if_exists]
No entanto, o manual do FreeMarker parece indicar que if_exists está obsoleto, mas não consigo encontrar outra maneira de conseguir isso. Obviamente, eu poderia simplesmente fornecer uma variável booleana adicional isUserName e usá-la assim:
[#if isUserName]
Hi ${userName}, How are you?
[/#if]
Mas se existe uma maneira de verificar se o userName existe, posso evitar adicionar essa variável extra.
java
templates
freemarker
Dónal
fonte
fonte
Este parece ser um ajuste melhor:
http://freemarker.sourceforge.net/docs/ref_builtins_expert.html
fonte
Também acho que if_exists foi usado como:
que não será interrompido se userName for nulo, o resultado se null for:
if_exists agora está obsoleto e foi substituído pelo operador padrão! como em
o operador padrão também suporta um valor padrão, como:
fonte
if
declaração, como solicitado.Eu acho que muitas pessoas querem verificar se a variável não está vazia e se existe. Penso que verificar a existência e o vazio é uma boa ideia em muitos casos, e torna seu modelo mais robusto e menos propenso a erros tolos. Em outras palavras, se você verificar se sua variável não é nula E não está vazia antes de usá-la, seu modelo se torna mais flexível, porque você pode lançar uma variável nula ou uma string vazia nela, e funcionará da mesma maneira em ambos os casos.
Digamos que você queira ter certeza de que
p
é mais do que apenas espaço em branco. Então você pode apará-lo antes de verificar para ver se estáhas_content
.ATUALIZAR
Ignore minha sugestão -
has_content
é tudo o que é necessário, pois faz uma verificação nula junto com a verificação vazia. Fazerp?? && p?has_content
é equivalente ap?has_content
, então você também pode usarhas_content
.fonte
Você não pode usar
??
para manipular valores ausentes, a sintaxe antiga é:fonte