1. Gramática básica
1. "#" é usado para identificar instruções de script do Velocity, incluindo #set, #if, #else, #end, #foreach, #end, #iinclude, #parse, #macro, etc.;
como:
#if($info.imgs)
<img src="http://VeVB.COm/ydmx_lei/blog/$info.imgs" border=0>
#outro
<img src="http://VeVB.COm/ydmx_lei/blog/noPhoto.jpg">
#fim
2. "$" é usado para identificar um objeto (ou entendido como uma variável como);
Como: $i, $msg, $TagUtil.options(...), etc.
3. "{}" é usado para identificar claramente a variável Velocity;
Por exemplo, na página há $someonename Neste momento, o Velocity usará SomeoneName como o nome da variável. Se nosso programa quiser exibir o caractere do nome imediatamente após a variável Someone, o rótulo acima deverá ser alterado para ${someone. . }nome.
4. "!" é usado para forçar variáveis não existentes a serem exibidas em branco.
Por exemplo, quando a página contém $msg, se o objeto msg tiver um valor, o valor de msg será exibido. Se não houver objeto msg, o caractere $msg será exibido na página. Isso é o que não queremos. Para exibir variáveis inexistentes ou objetos com valores de variáveis nulos em branco, você só precisa adicionar um sinal “!”
Como: $!msg
2. Melhores práticas no EasyJWeb
Teoricamente, você pode usar todos os scripts e funções do Velocity no modelo EasyjWeb, mas não recomendamos usar muitas expressões de script complexas no modelo de interface. Como último recurso, não adicione nenhuma lógica complexa ao modelo de interface. muito menos adicionar declarações de variáveis, operadores lógicos, etc. ao modelo de interface.
No EasyJWeb, fornecemos cinco instruções básicas de script de modelo, que podem basicamente atender aos requisitos de todos os modelos de aplicativos. Essas quatro instruções de modelo são muito simples e podem ser adicionadas diretamente pelo designer da interface. Em muitas práticas atuais de aplicação EasyJWeb, vemos que apenas as quatro instruções de script de modelo simples a seguir podem ser implementadas entre todos os modelos de interface:
1. $!obj retorna diretamente o resultado do objeto.
Por exemplo: exiba o valor do objeto java msg na tag html. <p>$!msg</p>
Exiba o valor do objeto msg processado pelo objeto HtmlUtil na tag html <p>$!HtmlUtil.doSomething($!msg)</p>
2. #if($!obj) #else #end declaração de julgamento
Por exemplo: Em vários aplicativos de código aberto do EasyJWeb, frequentemente vemos exemplos de mensagens pop-up de prompt.
#if($msg)
<roteiro>
alerta('$!mensagem');
</script>
#fim
O script acima significa que quando o objeto msg existir, o seguinte conteúdo, como <script>, será gerado.
3. #foreach( $info in $list) $info.someList #end Loops para ler os objetos na lista de coleção e processá-los adequadamente.
Por exemplo: o script de modelo de interface html para exibir tópicos populares na página inicial do fórum do sistema de fórum de código aberto EasyJF (0.3):
#foreach($info em $hotList1)
<a href="/bbsdoc.ejf?easyJWebCommand=show&&cid=$!info.cid" target="_blank">$!info.title</a><br>
#fim
O script acima indica que ele percorre os objetos da coleção hotList1 e gera o conteúdo relevante do objeto.
4. #macro(macroName)#end é uma chamada de função de script (macro) e não é recomendada para uso extensivo em modelos de interface.
Por exemplo: No exemplo de adição, exclusão, modificação e consulta gerada rapidamente usando EasyJWeb Tools, você pode clicar na barra de título da lista para exibir a ordem crescente e decrescente. Este é um conteúdo de modelo que vemos frequentemente em aplicativos EasyJWeb. para exibir o status de classificação.
Definição de função (macro), geralmente colocada primeiro
#macro(orderPic $type)
#if ($orderField.equals($type))
<img src="http://VeVB.COm/ico/${orderType}.gif">
#fim
#fim
A chamada específica é: <font color="#FFFFFF">title#orderPic("title")</font>
5. Inclua o arquivo #inclue("nome do arquivo de modelo") ou #parse("nome do arquivo de modelo")
Usado principalmente para lidar com páginas com o mesmo conteúdo, como o conteúdo superior ou inferior de cada site.
Para métodos de uso, você pode consultar os aplicativos no EasyJF Open Source Blog e no EasyJF Open Source Forum!
Como: #parse("/blog/top.html") ou #include("/blog/top.html")
A diferença entre analisar e incluir é que se houver uma tag de script Velocity no arquivo incluído, ela será analisada posteriormente, enquanto a inclusão será exibida como está.
3. Sobre o uso de #set
Como último recurso, não declare você mesmo as variáveis de script do Velocity na visualização da página, ou seja, use #set o mínimo possível. Às vezes precisamos exibir um número de série na página, mas o objeto do programa não contém esse atributo de número de série. Por exemplo, em um sistema cíclico, é o seguinte:
#conjunto ($i=0)
#foreach($info em $lista)
Número de série:$i
#set($i=$i+1)
#fim
4. Resumo da sintaxe do script de velocidade
1. Instrução: #set ($var=XXX)
O lado esquerdo pode conter o seguinte conteúdo
Copie o código do código da seguinte forma:
Referência de variável
Literal de string
Referência de propriedade
Referência de método
Número literal #set ($i=1)
ArrayList #set ($arr=["yt1","t2"])
operadores aritméticos
2. Nota:
Linha única ## XXX
Várias linhas #* xxx
xxxx
xxxxxxxxxxxx*#
Tipo de referência de referências
3. Variáveis
Começa com “$”, o primeiro caractere deve ser uma letra. caractere seguido por um identificador VTL (a .. z ou A .. Z).
As variáveis podem conter os seguintes caracteres:
alfabético (a .. z, A .. Z)
numérico (0..9)
hífen ("-")
sublinhado ("_")
4.Propriedades
$Identificador.Identificador
$usuário.nome
O valor do nome na tabela hash do usuário. Semelhante: user.get("name")
5. Métodos
objeto user.getName() = $user.getName()
6. Notação de referência formal
Use {} para separar nomes de variáveis de strings
como
#set ($usuário="csy"}
${usuário}nome
retornar csyname
$nome de usuário
$!nome de usuário
A diferença entre $ e $!
Quando o nome de usuário não é encontrado, $username retorna a string "$username" e $!username retorna a string vazia ""
7. Aspas duplas e aspas
#set ($var="helo")
teste"$var" retorna testehello
teste'$var' retorna teste'$var'
Você pode alterar o método de processamento padrão definindo stringliterals.interpolate=false
8. Declarações condicionais
Copie o código do código da seguinte forma:
#if($foo)
<strong>Velocidade!</strong>
#fim
#if($foo)
#elseif()
#outro
#fim
Executado quando $foo é nulo ou o valor falso de um objeto booleano.
9. Operadores lógicos: == && || !
10. Instrução de loop #foreach($var in $arrays) //A coleção contém os seguintes três tipos de Vector, um Hashtable ou um Array
#fim
#foreach($produto em $todosProdutos)
<li>$produto</li>
#fim
#foreach($chave em $allProducts.keySet())
<li>Chave: $key -> Valor: $allProducts.get($key)</li>
#fim
#foreach($cliente em $listacliente)
<tr><td>$velocityCount</td><td>$customer.Name</td></tr>
#fim
11. A variável speedCount é definida no arquivo de configuração
Copie o código do código da seguinte forma:
# Nome padrão do contador de loop
# referência de variável.
diretiva.foreach.counter.name = velocidadeCount
# Valor inicial padrão do loop
# referência de variável de contador.
diretiva.foreach.counter.initial.value = 1
12. Incluir arquivos
#include("one.gif","dois.txt","três.htm")
13. Analisar script de importação
#parse("me.vm")
14. #stop interrompe a execução e retorna
15. Defina macro Velocimacros, que equivale ao suporte de função incluindo funções
#macro(d)
<tr><td></td></tr>
#fim
chamar
#d()
16. Macros com parâmetros
Copie o código do código da seguinte forma:
#macro(linhas da tabela $cor $algumalista)
#foreach($alguma coisa em $algumalista)
<tr><td bgcolor=$color>$alguma coisa</td></tr>
#fim
#fim
17. Operador de alcance
#foreach($foo em [1..5])