Pergunta

Eu estou usando uma SPG para envio de e-mails baseado no MailService plug-in.O sendMail fechamento passa (entre outros) body(view:..., model:myModel)

Eu sei que eu posso acessar cada item do myModel Mapa usando apenas ${itemName} no SPG.No entanto, como eu, às vezes, quer para criar o nome do item dinamicamente como 'item'+i, Eu preciso ter alguns torno método para acessar a variável.

Eu já tentei ${model.get('item'+i), e ${params.get('item'+i), mas o modelo é nulo e params é um Mapa vazio.Eu também tentei pageScope, mas, embora eu possa acessar um item através de ${pageScope.itemName, Eu não posso usar ${pageScope.get('item'+i)} porque pageScope não é um Mapa.

Provavelmente existem várias soluções para resolver este;Eu ficaria feliz com um fácil ;-).Uma solução que eu vejo é passar myModel como o único parâmetro e, em seguida, use sempre myModel.get(...), no entanto , isso significaria que eu tive que alterar todos os meus existente GSPs para sempre se referem a myModel em vez de aceder a itens (fixa, com nomes) diretamente;então, se há um caminho onde eu não tenho que mudar o modelo passou para o GSP, esta seria a minha favorita.

Se alguém também poderia dizer algumas palavras sobre a diferença do modelo e parâmetros neste contexto, este seria além disso útil!

Foi útil?

Solução

Eu consegui agora usando ${pageScope.getProperty(...)}.

Outras dicas

Não há nenhum "modelo" de escopo ou variável.Em vez de objetos no modelo de mapa de são definidos como atributos de Solicitação para torná-los disponíveis para o GSP.Esta é uma Primavera recurso que facilita o acesso a variáveis em JSPs usando JSTL e desde que o GSP sintaxe é muito semelhante ao JSTL ele funciona da mesma maneira em Grails.

Então você pode usar esse:

${request.getAttribute('item'+i)}

para acessar variáveis do modelo utilizando dinâmica de nomes.

Você pode usar ${fieldValue(bean: book, field: 'title')}

Ver: http://grails.github.io/grails-doc/latest/ref/tags/fieldValue.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top