Reputation: 173
I have a Modal form with three combos:
<h:panelGrid columns="3" id="parameterLabels" >
<h:outputText id="lblCdrType" styleClass="formLabel" value="#{BRulesConfig.lblParameter307}:" />
<h:selectOneMenu id="cmdCdrType" style="font-family:Verdana, Arial, Helvetica, sans-serif ;font-size: 14px; width:240px ;"
value="#{BRulesConfig.cdrType}" >
<f:selectItem itemValue="-1" itemLabel="-Select One-" itemDisabled="true"/>
<f:selectItems id="lstCdrType" value="#{BRulesConfig.cdrTypeList}" />
<a4j:support event="onchange" action="#{BRulesConfig.changeStatus}"
reRender="parameterValuesPanelTypeModule,parameterValuesPanelFields,pnlValuesPar,formMessage,formErrMessage,formErrorNew,formInfoNew"
ajaxSingle="true" status="idLoading" />
</h:selectOneMenu>
</h:panelGrid>
<h:panelGrid columns="2" id="parameterValuesPanelTypeModule" >
<h:outputText id="lblCdrTypeModule" styleClass="formLabel" value="#{BRulesConfig.lblParameter307_output}:" />
<h:selectOneMenu id="cmdCdrTypeModule" style="font-family:Verdana, Arial, Helvetica, sans-serif ;font-size: 14px; width:240px ;"
value="#{BRulesConfig.parameterValueBean.id_output}" >
<f:selectItem itemValue="-1" itemLabel="-Select One-" itemDisabled="true"/>
<f:selectItems id="lstCdrTypeModule" value="#{BRulesConfig.cdrTypeModules}" />
<a4j:support event="onchange" ajaxSingle="true" status="idLoading" />
</h:selectOneMenu>
</h:panelGrid>
<h:panelGrid columns="2" id="parameterValuesPanelFields" >
<h:outputText id="lblCdrTypeModuleField" styleClass="formLabel" value="#{BRulesConfig.lblParameter307_field}: #{BRulesConfig.parameterValueBean.value}" />
<h:selectOneMenu id="cmdCdrTypeModuleField" style="font-family:Verdana, Arial, Helvetica, sans-serif ;font-size: 14px; width:240px ;"
value="#{BRulesConfig.parameterValueBean.value}">
<f:selectItem itemValue="-1" itemLabel="-Select One-" itemDisabled="true"/>
<f:selectItems id="lstCdrTypeModuleField" value="#{BRulesConfig.cdrTypeModulesField}" />
</h:selectOneMenu>
</h:panelGrid>
Everything is fine and is loading perfectly.
The first combo cmdCdrType
uses ajax to load the second combox cmdCdrTypeModule
. It does so using the onchange
event (a4j:support
). This is also true for the third combobox: cmdCdrTypeModule
.
I don't have any problem using any of these combos. But when I try to save all the info that I have stored, I receive the following error message sent by Faces:
28-jul-2011 18:04:51 com.sun.faces.lifecycle.RenderResponsePhase execute
INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=frm307:cmdCdrTypeModuleField[severity=(ERROR 2), summary=(frm307:cmdCdrTypeModuleField: Error de Validación: Valor no es correcto.), detail=(frm307:cmdCdrTypeModuleField: Error de Validación: Valor no es correcto.)]
Translating the last line:
Error de Validacion :Valor no es Correcto
Validation Error: Value is not valid
I tried using a converter class, but the same error is displayed. I tried changing my beans setters but nothing changes. My faces config looks like this:
<managed-bean>
<managed-bean-name>BRulesConfig</managed-bean-name>
<managed-bean-class>com.tsb.mediation.brules.configuration.BRulesConfigurationControl</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
I don't know why I'm receiving this error. Any help is appreciated.
Upvotes: 1
Views: 3659
Reputation: 1108732
During the apply request values phase of the form submit request, JSF will re-obtain the list of select items from the bean to compare the selected value against the list in order to prevent the server side against spoofed/tampered submits. If no one of the items equals()
the selected value, then you will get this error.
It look like that the bean is request scoped and/or that you're doing business in the getter. You need to put the bean in the view scope (or when you're using JSF 1.x, the <a4j:keepAlive>
on the bean) and move all business logic outside the getters to get it to work properly.
Upvotes: 0
Reputation: 1582
Validation Error : Value is not correct -- is not a converter error but validator error. Do you use custom objects in the drop down? If yes, then you need to overwrite equals() and hashCode() on the custom object.
Upvotes: 2