Hi,

you get this exception because you set as object model an Account object and not a Long one, which is the expected type for model. I suppose you should pass just Account id field as object model.
I wonder if anyone can help with the following bug in my code.
It relates to a Panel which contains a DropDownChoice.

This is the exception:

java.lang.IllegalArgumentException: Cannot format given Object as a Number

at java.text.DecimalFormat.format(DecimalFormat.java:487)
     at
java.text.Format.format(Format.java:140)
     at
org.apache.wicket.util.convert.converters.AbstractNumberConverter.convertToString(AbstractNumberConverter.java:111)


at
org.apache.wicket.util.lang.PropertyResolverConverter.convert(PropertyResolverConverter.java:85)


at
org.apache.wicket.util.lang.PropertyResolver$MethodGetAndSet.setValue(PropertyResolver.java:1110)


at
org.apache.wicket.util.lang.PropertyResolver$ObjectAndGetSetter.setValue(PropertyResolver.java:588)


at
org.apache.wicket.util.lang.PropertyResolver.setValue(PropertyResolver.java:136)


at
org.apache.wicket.model.AbstractPropertyModel.setObject(AbstractPropertyModel.java:169)


at
com.drf.hapoalim.gui.components.AccountDropDownChoice$4.onUpdate(AccountDropDownChoice.java:108)

Line 108 relates to the following line of code:
model.setObject(accountsMap.get(accountNumber));
What I cannot understand is what Decimal conversion is going on here: The
'model' variable is declared as IModel<Account>  model, and the value
returned by the map is indeed an Account object.

Here is the code (trimmed down):
public class AccountDropDownChoice extends Panel {
        
        private static final long serialVersionUID = 530407612837913746L;
        @SpringBean
        private AccountService accountService;
        private List accountsList = new ArrayList();
        private Map<Long, Account>  accountsMap = new HashMap<Long, Account>();
        private Long selectedAccount;
        private DropDownChoice<Long>  dropDown = null;
        
        public AccountDropDownChoice(String id, final IModel<Account>  model) {
                super(id);
                selectedAccount = 0L;
                model.setObject(null);
        
                dropDown = new DropDownChoice<Long>("accountsDropDown", new
Model<Long>(selectedAccount), accountsList, new AccountChoiceRenderer()){
        
                        
                        @Override
                        protected boolean wantOnSelectionChangedNotifications() 
{
                                return true;
                        }
                        
                        // Set default to 'all accounts' when used with this 
constructor
                        @Override
                        protected CharSequence getDefaultChoice(Object 
selected) {
                                return super.getDefaultChoice(0);
                        }
                };

                dropDown.add(new AjaxFormComponentUpdatingBehavior("onchange") {
                        private static final long serialVersionUID = 1L;

                        @Override
                        protected void onUpdate(AjaxRequestTarget target) {
                                if (selectedAccount!=null){
                                        Long accountNumber = (Long)
accountsList.get(Integer.parseInt(dropDown.getModelValue()));
                                         // EXCEPTION OCCURS HERE
                                        
model.setObject(accountsMap.get(accountNumber));

                                }
                                
                        }
                });

                add(dropDown);
        }

Whoever can help - thank you very much!!!



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to