lightbulb432 wrote:
Thanks for your response.

Which is a good class to set the first breakpoint in, from which I could
follow out the rest of the processing? Would it be in the generated servlet,
in some kind of interceptor class (if using JBoss), the Faces Servlet, or
where?

You might find this page useful:
   http://wiki.apache.org/myfaces/StudyGuide


If there's absolutely no information stored on the server, then (assuming
somebody could unencrypt the content of those fields) technically somebody
could alter the hidden field values, resubmit the form and see something
different from what they expected, right?

Yep. That's why there is an option to encrypt the client-side state.

However in general it's not necessary; all the user can do is stuff up their own use of the app. Remember that all JSF does is pass data through to managed beans that then implement the business logic; that java code should only allow users to perform valid operations.


With server-side state-saving, how is the information passed between the
client and the server? (cookies, URL, hidden form fields?)

The controller tree state is stored in the user's http session.

A hidden field is needed in the page in order to ensure that when a user clicks the "back" button, or runs multiple windows in parallel, that the right controller state is pulled from the user's http session; myfaces keeps the last N controller trees in the session where N is configurable precisely in order to support back buttons when using server-side state.

I don't understand what else you are looking for here.


I understand I'm asking implementation details that I don't "necessarily"
need to know in order to use JSF, but I nonetheless need to understand the
concepts. I think it's unwise for a developer to not know (at least on a
conceptual level) what's going on the in framework or tool that they're
using. Not to mention the fact that developers often (if not VERY often)
need to justify these development choices to others within their
organizations.

It is definitely useful to understand the concepts. However as has been pointed out, exactly what javascript and hidden fields are used for a particular implementation are not concepts, they are MyFaces implementation artifacts.

The JSF concepts are that there are phases (restore-view, apply-request-values, validate, etc). And that there is a "component tree". And that components have value-bindings that map into managed beans (or anything else in request/session/application scopes).

To use java it's useful to have an understanding of classloaders and runtime linking. However it's not necessary to learn JVM bytecode for most users. And it's certainly not useful for many people to dive into a particular JDK's compiler implementation for example.

I certainly don't mean to discourage you from understanding how MyFaces works; I've personally downloaded and read the source code and it was interesting and useful. However that kind of detail is not really appropriate for this user list. If you truly care, I recommend reading the "study guide" page on the wiki (and possibly the rest of the wiki too), then the source-code then ask questions on the dev list. The people who know enough about MyFaces to answer very detailed implementation questions are probably too busy to answer a stream of open-ended questions like "how does it work?"..

Regards,

Simon

Reply via email to