Executar expressão booleana dentro de String
14/01/2017 00:21
0
Tenho uma String do tipo "objeto.atributo1 == 10 && objeto.atributo2 < 5".

Como faço para executar essa expressão que está dentro da String e retornar o boolean de resultado? Em um GSP por exemplo...
Tags: Grails eval


0
Não sei se é o que vc deseja mais usando ternario fica assim

${(1 == 1 && 3 < 1)?true:false}
16/01/2017 09:36


0
O que você precisa na realidade é de executar scripts em Java

Tenho um vídeo sobre isto: https://www.youtube.com/watch?v=_njSd-efuCo

Preocupe-se com o desempenho. Tenho outro vídeo sobre isto: https://www.youtube.com/watch?v=Fa__6_5Z-wc

E principalmente, segurança. Seguem mais dois links:

https://www.youtube.com/watch?v=8egPIoqsuLI

https://www.youtube.com/watch?v=rjN3S0JiMzc


0
Ótimas dicas Kico.

Minha condição dentro da String encontra-se em um atributo de uma classe de domínio. E preciso executar a partir de um GSP. Resolvi da seguinte forma:

Classe Domínio:

String condicao // Ex de conteúdo: "objeto.atributo1 == 10 && objeto.atributo2 < 5"

boolean executaCondicao(objeto){
if(condicao){
return Eval.me('objeto', objeto, condicao)
}
return true
}


GSP:

${classeDominio.executaCondicao(objeto)}?


0
Victor,

algo que você tem de levar muita atenção é a segurança. Lembre que como é código avaliado, este código pode executar uma série de ações que você não tenha controle. 
Exemplo: System.halt();


0
É, no meu caso esse código executado são parametrizações feitas pelo próprio administrador do sistema. Não tendo como ser um input do usuário comum. Por isso não fiz mais nenhuma verificação de segurança.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto