En realidad no se cual pudiera ser tu problema, pero la diferencia entre ambas expresiones es que utilizando
#, el resultado de la expresion se transfiere a otras fases en el ciclo de vida de la pagina. En cambio utilizando
$ el valor se calcula inmediatamente y no se pasa a otras fases.
Revisa el tutorial de Java EE 6:
Immediate and Deferred evaluation syntax
http://download.oracle.com/javaee/6/...doc/bnahr.html