Come confrontare una proprietà char in EL

Ho un pulsante di comando come sotto.

 

anche quando il valore product.orderStatus è uguale a 'N' il pulsante di comando non viene visualizzato nella mia pagina.

Qui product.orderStatus è una proprietà di carattere.

Questo è, sfortunatamente, il comportamento previsto. In EL, qualsiasi cosa tra virgolette come 'N' viene sempre considerata come una String e un valore di proprietà char viene sempre considerato come un numero. Il char è in EL rappresentato dal suo punto di codice Unicode, che è 78 per N

Esistono due soluzioni alternative :

  1. Usa String#charAt() , passando 0 , per ottenere il char da una String in EL. Nota che funziona solo se il tuo ambiente supporta EL 2.2. Altrimenti è necessario installare JBoss EL .

      
  2. Usa la rappresentazione numerica del char in Unicode, che è 78 per N È ansible determinare il codecoint Unicode corretto da System.out.println((int) 'N') .

      

La vera soluzione , tuttavia, è usare un enum :

 public enum OrderStatus { N, X, Y, Z; } 

con

 private OrderStatus orderStatus; // +getter 

allora puoi usare esattamente la syntax desiderata in EL:

  

Un ulteriore vantaggio è che le enfatizzazioni rafforzano la sicurezza del tipo. Non sarà ansible assegnare un carattere alternativo come o come valore dello stato dell’ordine.