Unfortunately, this is expected behavior. If validations phase fails, the update model values phase won't be executed. This not only applies to the input fields of the form, but also to the view parameters involved in the same request! Apparently, your bean is request scoped and then the view parameters set during the initial request will indeed be lost.
Your best bet is making the managed bean a @ViewScoped
one instead and using <o:viewParam>
instead to set the view parameter during the initial GET request only. You may only need to alter the init()
method to skip the job when Faces#isPostback()
returns true
.