Lendo objetos de modelo mapeados em modelos de velocidade
Pergunta
Eu tenho uma estrutura Struts + Velocity como por exemplo, uma classe Person, cuja única propriedade é um objeto Car (com seus próprios métodos getter/setter) e é mapeado para um formulário Velocity que submete a uma Action, usando a estrutura ModelDriven e getModel .
Eu coloco um botão no formulário que mostra "Ver carro" se a propriedade do carro não for nula ou car.id! = 0 ou mostrar outro botão "Escolher carro" se o carro for nulo ou car.id = 0.
Como faço para codificar isso.Eu tentei algo assim no arquivo de modelo:
#if($car != null)
#ssubmit("name=view" "value=View Car")
#else
#ssubmit("name=new" "value=Choose Car")
#end
Mas continuo recebendo erros sobre o valor Nulo no #se linha.
Também criei um método booleano hasCar() in Person para tentar, mas não consigo acessá-lo e não sei por quê.
E os tutoriais do Velocity + Struts são difíceis de encontrar ou possuem boas informações.
Obrigado
Solução
Você deve alterar a linha #if para:
#if($car)
Outras dicas
Na próxima versão do Velocity 1.6, você poderá fazer #if( $car == $null )
sem mensagens de erro.Isso permitirá que você distinga facilmente entre quando $car
é nulo e quando é falso.Para fazer isso agora é necessário #if( $car && $car != false )
, o que simplesmente não é tão amigável.