You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Himanshu Amin (JIRA)" <de...@myfaces.apache.org> on 2009/04/14 22:25:14 UTC

[jira] Created: (MYFACES-2199) UPDATE_MODEL_VALUES phase is setting object to default value (e.g. BigDecimal = 0, Integer = 0)

UPDATE_MODEL_VALUES phase is setting object to default value (e.g. BigDecimal = 0, Integer = 0)
-----------------------------------------------------------------------------------------------

                 Key: MYFACES-2199
                 URL: https://issues.apache.org/jira/browse/MYFACES-2199
             Project: MyFaces Core
          Issue Type: Bug
    Affects Versions: 1.2.6
         Environment: Web Application: MyFaces 1.2.6, Tomahawk12 1.1.8, Richfaces 3.3.0, Facelets 1.1.14
Application Server: Tomcat 6.0.18
IDE : Eclipse 3.4.2
            Reporter: Himanshu Amin


I have following in my JSP
<h:inputText id="bigDecimal" value="#{myHandler.bigDecimal}" size="11" maxlength="50"   converter="CustomBigDecimalConverter"/>

I have following in my CustomBigDecimalConverter. Which is returning null if you leave input text empty.
	public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2)throws ConverterException{
		try {
			if(arg2 != null){
				String localS = arg2.toString().trim();
				if(StringUtils.isNotBlank(localS)){
					BigDecimal bigDecimal = new BigDecimal(localS);
					return bigDecimal;
				}
			}
			return null;
		} catch (Exception e) {
			FacesMessage msg = new FacesMessage();
			msg.setSummary("Please enter a valid Amount. Alphabet and negative value is not allowed.");	
			throw new ConverterException(msg);
		}
	}
Following I have in my Phase Listener. I am calling this code on before and after.
	private void myTesting(PhaseEvent phaseEvent) {
		try{
			MyHandler MyHandler= (MyHandler) FacesUtils.getManagedBean("MyHandler");
			if(MyHandler!= null){
				System.out.println("My Handler : "+MyHandler);
				if(MyHandler.getBigDecimal() != null){
					System.out.println("BigDecimal : "+MyHandler.getBigDecimal());	
				}
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
	}

Following is my Out put of Phase Listener
BEFORE PHASE : RESTORE_VIEW(1)
My Handler : xxx.MyHandler@126078f
AFTER PHASE : RESTORE_VIEW(1)
My Handler : xxx.MyHandler@126078f
BEFORE PHASE : APPLY_REQUEST_VALUES(2)
My Handler : xxx.MyHandler@126078f
AFTER PHASE : APPLY_REQUEST_VALUES(2)
My Handler : xxx.MyHandler@126078f
BEFORE PHASE : PROCESS_VALIDATIONS(3)
My Handler : xxx.MyHandler@126078f
AFTER PHASE : PROCESS_VALIDATIONS(3)
My Handler : xxx.MyHandler@126078f
BEFORE PHASE : UPDATE_MODEL_VALUES(4)
My Handler : xxx.MyHandler@126078f
AFTER PHASE : UPDATE_MODEL_VALUES(4)
My Handler : xxx.MyHandler@126078f
BigDecimal : 0
BEFORE PHASE : INVOKE_APPLICATION(5)
My Handler : xxx.MyHandler@126078f
BigDecimal : 0
AFTER PHASE : INVOKE_APPLICATION(5)
My Handler : xxx.MyHandler@126078f
BigDecimal : 0
BEFORE PHASE : RENDER_RESPONSE(6)
My Handler : xxx.MyHandler@126078f
BigDecimal : 0
AFTER PHASE : RENDER_RESPONSE(6)
My Handler : xxx.MyHandler@126078f
BigDecimal : 0

If we see in above log, I can see BigDecimal's value was null until BEFORE PHASE : UPDATE_MODEL_VALUES(4). It became "0" on and after AFTER PHASE : UPDATE_MODEL_VALUES(4). 
I am facing this problem in MyFaces 1.2. Earlier I was using same code with MyFaces 1.1 and it was/is running fine. So I thought I should let you know.
Please let me know if I am doing something wrong here as I am really newbie. Please let me know if I can help in anything with this issue.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.