[
https://issues.apache.org/jira/browse/MYFACES-1532?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12473081
]
Paul Iov commented on MYFACES-1532:
-----------------------------------
Sorry for cloning this issue as MYFACES-1533. Would someone close/delete this
one please?
> Custom converter consequently ignored
> -------------------------------------
>
> Key: MYFACES-1532
> URL: https://issues.apache.org/jira/browse/MYFACES-1532
> Project: MyFaces Core
> Issue Type: Bug
> Components: General
> Affects Versions: 1.1.4, 1.1.5-SNAPSHOT, 1.1.5, 1.1.6-SNAPSHOT
> Environment: MyFaces + Facelet + Ajax4JSF
> Reporter: Paul Iov
>
> The way how the custom converters are handled in current code is totally
> incosistent!
> This issue can be splited into two parts:
> 1. Initial rendering of component, which provides custom converter don't
> check this, but just throws an exception: "Expected submitted value of type
> ... for Component:...", if the type of bound bean property dosn't match
> expected type. (i.e. h:selectBooleanCheckbox can't be bound to a String
> property, even with a custom converter, that converts a string value posted
> from client to "true"/"false", "1"/"0", "yes"/"no" or whatever, because this
> converter is just not called at this stage.)
> Usecase
> in bean:
> ----------------------------------------
> private String strBoolean = "1";
>
> public String getStrBoolean() {
> return strBoolean;
> }
> public void setStrBoolean(String strBoolean) {
> this.strBoolean = strBoolean;
> }
> converter:
> ---------------------------------------
> public class BooleanConverter implements Converter {
>
> public Object getAsObject(FacesContext arg0,
> UIComponent arg1,
> String newValue) throws
> ConverterException {
> return newValue.equalsIgnoreCase("true") ? "1" : "0";
> }
> public String getAsString(FacesContext arg0,
> UIComponent arg1,
> Object myValue) throws
> ConverterException {
> return myValue.toString().equalsIgnoreCase("1") ? "true" :
> "false";
> //what should we return here, to make the UIBoolean happy???
> //"checked"/"" ? "on"/"" ? nothing works, because this method is
> //just not called!
> }
> }
> in xhtml:
> ------------------------------------
> <h:selectBooleanCheckbox value="#{MyBean.strBoolean}"
> converter="MyBooleanConverter"/>
> causes:
> ----------------------------------
> Expected submitted value of type Boolean for Component :...
> Side note: if property in bean is initialized to null, all works great
> without any warning and the initial state of component's value becomes false!
> Well, t:inputCalendar implements own converter handling and it works great,
> if some valid string is posted from client, but it's not possible to set
> initial value of component in bean, i.e.
> private String strDate = "01.01.2006";
> The initial 'rendered' state of component is always an empty string.
> 2. The second one should be probably the JSF Specification issue, but somehow
> is also converter related... AJAX compatybility. I've discovered some strange
> behaviour by using ajaxSingle feature from A4J. If a component's value is not
> present in request (ajaxSingle approach), it becomes null during 'Apply
> request values' phase regardless of custom converter (which tries to catch
> this situation in getAsObject() method). The warning "There should always be
> a submitted value..." is correct, but why should the framework not try to let
> custom converter deal with this situation, if it's provided?
> regards,
> paul
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.