On the AJAX stuff, I'd say that Javascript is very important, even using one of the modern libraries... writing it by hand pretty obviously requires that you have a decent understanding of Javascript, and the libraries, which you might expect to alleviate that, really don't... take something like Dojo for instance... quite powerful, can save you a lot of time and effort, but if you don't understand Javascript, it's in some ways going to be even more difficult to comprehend than "naked" AJAX code. As for understanding my book, my feeling is that if you've done a bit of Javascript, and certainly reading those two books qualifies, I think you'd get a lot out of it... there could be some challenging parts where you have to break out to Google for a few minutes, but by and large I think it'd be OK... the original outline of it says it isn't intended for beginners, and I still think that's accurate, but I don't think you have to have had prior AJAX experience frankly, nor do I think you really have to have had more than a little Javascript experience. If your new to Java though, that's where there would be a problem I think because I do assume throughout the book that the reader is already familiar, by and large, with Java.
Now, about JSF... I should start by saying that my opinions of JSF are quite controrsial, and I know it
First off, I simply hate the fact how it was being absolutely rammed down our throats a little while back... this seems to have settled down to a normal level, but for a while you had everyone telling you how JSF was the future of web development, and it was absolutely obvious that those shills were in it for the money. JSF has from the beginning been about competing with .Net, which means tooling is all but required, which means anyone selling tools has a vested interest in it succeeding whether it's technically a good solution or not. All of that just rubs me the wrong way, although as I said, it seems to have died down to a normal level where we can actually evaluate JSF on a purely technical "does it suit my needs" level, which if it had been that way all along would have removed a lot of my negative opinions
Second, I've been to plenty of presentations where the presenter starts by saying how JSF is easy, makes life simpler, etc, and then proceeds to put together a "simple" example application that makes everyones' brain turn to mush in no time. Five different config files, classes all over the place, all sorts of new tags, etc. And the whole time you can hear the whispers throughout the audience: "This is easier?!?!?!?" Now, someone will come along and say with the right tooling it's easier, and I wouldn't argue that, but I'm not a fan of anything that seemingly requires tooling to be usable... there's nothing I hate more than meeting a developer who can use this tool or that tool but doesn't understand what's going on underneath... to me, if you can't do it by hand, you shouldn't be using a tool to do it because your just going to make my life miserable in the future when I have to maintain your generated crap... and if writing JSF by hand is less efficient than other options, it's not worth it.
Third, writing components is WAY too difficult, and it seems that you will HAVE to write components to do anything more advanced. JSF's greatest promise, IMO, is the custom component aspect, and it's something I'm actually onboard with... but, writing components takes way too much effort at present... and as I've heard the story told, the component model was the driving focus in the first JSF spec... uhh, didn't quite hit the mark IMO
On a more technical level, I really do worry about putting (potentially) so much information into session... the entire component tree for a complex page could, in theory, quickly become a problem in a distributed environment where session replication has to be a concern... now, I've never encountered such a problem, so maybe I'm overblowing it in my own mind, but I do worry about it.
Another point, although obviously not a failing of JSF itself, is a lack of good examples and documentation. Oh, there's no shortage of both on the web to be sure, but I've never seen a simple application that (a) wasn't overcomplicated or (b) too simplistic. It seems that every example I've ever looked at goes to one extreme or the other.