Jasper is picky, as I have come to learn. As soon as you said the Group Header, I know that was the issue. I'm no guru at Jasper, but I can tell you that Variables don't get calculated until the detail band (from what I have seen)
so you can do one of two things in this instance:
1. use a parameter instead of a variable. It can be used more than just for the user to enter a value.
2. change the evaluation time for the text field. The default evaluation time is Now. So in your case when when it got to the TextField, the value was still null. Thus for the group band, you can switch the eval time to Group[nameofthegroup]
but do not use Auto. From what I have read, it is not worth it and ends up using more resources