Imagine you have a page with a required UIViewParameter called input. You will
get a validation error as long as you don't access the view with ?input=abc. Now
if you do that once, "abc" will be saved as the submittedValue in the state of
the UIViewParameter for every postback and thus will be available for every
further postback. If you now access the view again with a GET request
(non-postback), but without ?input=abc, you will again get a validation error.
However, if you hit any button or link on the view to generate another postback
to the view, the validation error will be gone, because UIViewParameter takes
the value from before ("abc") out of the model (managed-bean) and sets it in the
state. Thus you haven't provided it via ?input=abc, but you will now have a
value of "abc" for your UIViewParameter, which seems kinda wrong to me. The
solution to this one is to get the value from the model to set it as the
submittedValue in UIViewParameter only if the current request is a postback.
However I don't know if this really is an error or the expected behaviour. I
personally just think that it is weird.
Answer from Martin Marinschek: "I absolutely agree that we should do this only
on a postback - everything else is really, really weird behaviour."