erro incomum ao usar linguagem de expressão em JSP apenas para determinado rei de Verifique Properties- este

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

  •  18-09-2019
  •  | 
  •  

Pergunta

Eu tenho este cenário incomum:

Eu tenho um registrationVO com poucas propriedades e setters getter para isso. Por exemplo city ou bCity com seus métodos getter getCity() e getBCity()

Em JSP i tentou exibir o valor dessas propriedades usando Scriplets, <%=registrationVO.getCity()%> e <%=registrationVO.getBCity()%>, ele funciona bem. Mas eu substituído o mesmo com linguagem de expressão, ${registrationVO.city} e ${registrationVO.bCity} eu tenho um erro dizendo propriedade "bCity" não encontrado em registrationVO. i um scriplet usado novamente para bCity, eu tenho a saída.

Eu observei que a sua causa da convenção de nomenclatura. "Se o segundo personagem da propriedade é uma letra maiúscula que não posso usar Expression Language". Eu tentei com muitos namings diff, isso é o que eu descobri.

Por favor, verifique este cenário, eu não sei wether minha conclusão é certo ou errado.

Obrigado, DJ

Foi útil?

Solução

Se o nome da propriedade do método getter começa com pelo menos duas letras maiúsculas, então você precisa usar todos esses caracteres maiúsculos no nome da propriedade EL também. No seu caso particular, você precisa substituí-lo por ${registrationVO.BCity}. Isso é especificado no capítulo 8.8 do Javabeans especificação . Aqui está um excerto do capítulo (grifo meu):

8,8 Capitalização de nomes inferidas.

Quando usamos padrões de design para inferir um nome de propriedade ou evento, precisamos decidir o que regras a seguir para capitalizar o nome inferido. Se extrair o nome do meio de uma normal, estilo MixedCase nome Java, em seguida, o nome será, por padrão, começar com uma letra maiúscula.

Os programadores de Java estão acostumados a ter identificadores normais começam com letras minúsculas. input revisor vigorosa nos convenceu de que deveríamos seguir esta mesma regra convencional para nomes de propriedades e eventos.

Assim, quando extrair um nome de propriedade ou evento a partir do meio de um nome de Java existente, normalmente converter o primeiro caractere para minúsculas. No entanto, para apoiar o uso ocasional de tudo nomes maiúsculas, vamos verificar se os dois primeiros caracteres do nome são ambos maiúsculas e se para deixá-lo sozinho . Assim, por exemplo,

  • “FooBah” se torna “fooBah”
  • “Z” se torna “z”
  • “URL” se torna “URL”

Nós fornecemos uma Introspector.decapitalize método que implementa esta regra de conversão.

Dito isso, eu preferiria renomeá-los para algo mais sensato. Talvez birthCity (se eu acho que a direita), de modo que você pode apenas bem usar ${registrationVO.birthCity}.

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