Is there a work around?
Thanks,
Emmanuel
On 10/6/05, Thomas A. Valletta (JIRA) <[email protected]> wrote:
[ http://issues.apache.org/jira/browse/MYFACES-669?page=comments#action_12331525 ]
Thomas A. Valletta commented on MYFACES-669:
--------------------------------------------
So I have tracked this same issue. The converter is getting a java.lang.String instead of the expected object after a page is submitted. This seems to be occurring because the HtmlRendererUtils.decodeUISelectOne() sets the submitted value to the value of paramMap.get(clientId). Code from MyFaces 1.1:
...
Map paramMap = facesContext.getExternalContext()
.getRequestParameterMap();
String clientId = component.getClientId(facesContext);
if (paramMap.containsKey(clientId)) {
//request parameter found, set submitted value
((EditableValueHolder) component).setSubmittedValue(paramMap
.get(clientId));
} else {
...
but then if you step through the encodeEnd:
HtmlSelectOneMenu(UIComponentBase).encodeEnd(FacesContext) line: 331
HtmlMenuRenderer(HtmlMenuRendererBase).encodeEnd(FacesContext, UIComponent) line: 54
HtmlRendererUtils.renderMenu(FacesContext, UISelectOne, boolean) line: 251
HtmlRendererUtils.internalRenderSelect(FacesContext, UIComponent, boolean, int, boolean) line: 295
HtmlRendererUtils.getSubmittedOrSelectedValuesAsSet (boolean, UIComponent, FacesContext, Converter) line: 327
you find this code in the HtmlRendererUtils.getSubmittedOrSelectedValuesAsSet that calls the getConvertedStringValue on the lookup which is set to the same submitted value.
...
UISelectOne uiSelectOne = (UISelectOne) uiComponent;
Object lookup = uiSelectOne.getSubmittedValue();
if (lookup == null)
{
lookup = uiSelectOne.getValue();
}
if(RendererUtils.NOTHING.equals(lookup))
{
lookupSet = Collections.EMPTY_SET;
}
else
{
String lookupString = RendererUtils.getConvertedStringValue(facesContext, uiComponent, converter, lookup);
lookupSet = Collections.singleton(lookupString);
}
...
So the getConvertedStringValue calls the converter and passes in the string from the paramMap. This will probably cause any number of errors in your converter.
Tom
> Validation error
> ----------------
>
> Key: MYFACES-669
> URL: http://issues.apache.org/jira/browse/MYFACES-669
> Project: MyFaces
> Type: Bug
> Components: General
> Versions: 1.1.0
> Environment: XP, IE, jboss-4.0.2
> Reporter: hovan
>
> I got the validation error today by trying to do the 'smart thing'. Basically i have the list of objects and display as the combo box. What i do before work very fine because all thing is string. This time i try to populate directly my objects to the combo box by specify the converter. The result is OK, i got what i want but when i submit the form i got the Validation error. The code simple like this:
> <h:selectOneMenu id="S1" value = "#{csCardRequestHandler.suffixesModel[0].selectedValue}"
> disabled="#{csCardRequestHandler.suffixesModel[0].disableSelect}">
> <f:selectItems value="#{csCardRequestHandler.suffixesModel[0].availableItems}"/>
> <f:converter converterId="com.ps.cardservices.SuffixFieldConverter"/>
> <!--f:validator validatorId="com.ps.cardservices.NullValidator"/-->
> </h:selectOneMenu>
> Then i thought because of my custom converter so i try to specify the NullValidator just do nothing, still it keeps saying 'ValidatorError'
> One more thing i love to report, on my converter method:
> public String getAsString(FacesContext context, UIComponent component, Object object) throws ConverterException;
> While some tim i get the object as java.lang.String instead of my object type?
> Regards,
> hovan.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
