Como comparar duas variables ​​de object na linguagem de expressão EL?

Estou criando uma lista suspensa de todos os idiomas. A seleção de idioma padrão para a lista será determinada pelas informações adicionadas pelo usuário:

    ${lang}   ${lang}     

.equals não parece existir em EL. Tendo dado uma olhada aqui, é sugerido que eu escreva minha própria function e depois importe e use isso. Como esta é uma coisa pequena só para esta página eu não quero ter que começar a criar bibliotecas etc apenas para isso. Também não quero começar a criar objects especializados para que o servlet retorne com essas informações extras neles.

A única coisa que posso pensar em fazer é retornar o html real para toda a linha de opções do servlet, em vez de apenas a string de idioma, mas isso me parece tão feio, então espero que haja uma solução mais elegante.

Qual é o melhor plano para uma solução rápida para comparar duas strings no EL?

O tutorial do J2EE 1.4

Em Expression Language, você pode simplesmente usar o operador == ou eq para comparar valores de objects. Nos bastidores eles usam o Object#equals() . Desta forma é feito, porque até com a versão atual do EL 2.1 você não pode invocar methods com outras assinaturas além dos methods padrão getter (e setter) (no próximo EL 2.2 seria possível).

Então a linha em particular

  

deve ser escrito como (note que toda a expressão está dentro do { e } )

  

ou equivalente

  

Ambos estão por trás dos bastidores interpretados como

 jspContext.findAttribute("lang").equals(jspContext.findAttribute("pageLang")) 

Se você quiser comparar valores constantes de String , então você precisa citá-lo

  

ou equivalente

  

que está por trás das cenas interpretadas como

 jspContext.findAttribute("lang").equals("en") 

Não tenho certeza se eu entendi bem, mas a maneira mais simples seria algo como:

    

Apenas uma cópia rápida e cole de um aplicativo meu …

HTH