Estou recebendo uma NullPointerException ao acessar restrições estáticas

StackOverflow https://stackoverflow.com/questions/214914

  •  03-07-2019
  •  | 
  •  

Pergunta

O código

${personRequest.constraints.requestStatus.inList}

no meu arquivo GSP lança um NullPointerException, mas new PersonRequest().constraints.. funciona. Por quê? Não é constraints estático?

Foi útil?

Solução

Copiado de aqui (Lista de discussão do Usuador de Grails)

Mas por que aderir a campos estáticos não funciona?

Porque o campo estático "restrições" é uma propriedade de fechamento. Não possui subpropertas relacionadas às restrições.

Os Grails avaliam esse fechamento usando um construtor de restrições que monitora "chamadas" para métodos que não existem, ou seja, os nomes de propriedades que você usa:

type( inList: [xxxxx])

... faz com que uma chamada de método "digite" com um parâmetro de mapa que contém "inlist" ==> algum valor.

A partir desta informação, o Grails cria uma lista de todas as restrições
Disponível e os liga a instâncias futuras da classe de domínio.

Então, quando você acessa o usuário.Constraints estaticamente, você está recebendo um
Fecho.

Nós - poderemos substituir o valor da propriedade de restrições estáticas em tempo de execução após avaliar o fechamento com o qual é inicializado. No entanto, isso pode ser um pouco "demais" mágica. O que as pessoas pensam?

Para sua informação, é assim agora, porque até 0,4 (se bem me lembro) as restrições não eram estáticas e, em 0,4, elas ainda podem não ser estáticas. Apenas em 0,5
Vamos fazer uma exceção/ignorar restrições não estáticas.

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