I thought provide a bit more debug info..
If a user selects any other option, then the lifecycle phases are:
----------------------------------------------
INFO: AFTER APPLY_REQUEST_VALUES(2)
Dec 24, 2007 1:26:11 PM org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER APPLY_REQUEST_VALUES(2)
[AppName] DEBUG [http-8080-1] LifecycleImpl.executePhase(110) | exiting
APPLY_REQUEST_VALUES(2) in org.apache.myfaces.lifecycle.LifecycleImpl
[AppName DEBUG [http-8080-1] LifecycleImpl.executePhase(81) | entering
PROCESS_VALIDATIONS(3) in org.apache.myfaces.lifecycle.LifecycleImpl
Dec 24, 2007 1:26:11 PM org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE PROCESS_VALIDATIONS(3)
Dec 24, 2007 1:26:11 PM org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE PROCESS_VALIDATIONS(3)
...... it continues till save and then processess the action 'list' to
listing page.
If a user does not change the option, i.e., keeps the original option,
the lifecycle phases are:
------------------------------------------------------------
Dec 24, 2007 1:25:23 PM org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER APPLY_REQUEST_VALUES(2)
Dec 24, 2007 1:25:23 PM org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER APPLY_REQUEST_VALUES(2)
[AppName] DEBUG [http-8080-1] LifecycleImpl.shouldRenderResponse(164) |
exiting from lifecycle.execute in APPLY_REQUEST_VALUES(2) because
getRenderResponse is true from one of the after listeners
[AppName] DEBUG [http-8080-1] LifecycleImpl.render(121) | entering
RENDER_RESPONSE(6) in org.apache.myfaces.lifecycle.LifecycleImpl
Dec 24, 2007 1:25:23 PM org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE RENDER_RESPONSE(6)
Dec 24, 2007 1:25:23 PM org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE RENDER_RESPONSE(6)
So , after apply_request_values phase (2), it jumps to Render_response
phase (6).
What would make getRenderResponse to be true if the user is not changing
the current selection from dropdown?
Thanks
MRather
M Rather wrote:
Hello,
I have a <h:selectOneMenu ... . It has its options populated by
<f:selectItems value="#{lookupObject.availableOptions...}" />
I addtionally have two <f:selectItem along with it
<f:selectItem itemValue="" itemLabel="Select One Option" />
<f:selectItem itemValue="#{beanForm.entity.childObject.id}"
itemLabel="#{beanForm.entity.childObject.id}"
/>
(eventually, the second f:selectItem needs to be rendered optionally..
but assume for now that is is needed.
The reason for this is this:
I have a dropdown in a form, its options and values should be :
"" "Select One Option"
"currentId" "Current Selected Option"
"optionOneId" "Available Option 1"
"optionTwoId" "Available Option 2"
If users select 'Select One Option', that delinks the obejct
relationship with that option (as this field is optional)
If user selects any of the Available Options, then on submit, object
is linked with that option.
And, if the user does not change the option from 'Current Selected
Option', then the object retains its existing relationship
In my case,
If a user selects 'Select One Option' or any of other options, the
submit works fine, including building of relationships.
BUT , IF a user does not change the options, upon submit I get the
following error:
beanForm:childObject: Validation Error: Value is not valid
I tried to use, 'immediate=true' to skip validation, and even wrote my
custom validator for the component, (actually, doing nothing in it,
assuming that will treat it as no error on validations), but I still
get this error?
Am I doing something wrong here?
Another thing to note is when the form is drawn after submit, the
'Current Selected Option' is empty and its value is empty. Should I be
populating this option in any other way? instead of the bean.entity
itself?
Thanks
MRather