Okay, im writing inline...

Mathias P.W Nilsson wrote:
Here is the fragment for sending external data. The form is a class variable
and is visible in the fragment

final class PostenOrderFragment extends Fragment{
        private static final long serialVersionUID = 1L;

        public PostenOrderFragment( String panel, String id ){
                super( panel, id, OrderControl.this );
                final PostenOrder order = (PostenOrder) getOrder();
                /* Transfer user data. Copy the data from the user to the order 
*/
                order.transferUserData( 
((HairlessSession)getSession()).getUser() );
                        

                final HiddenField Merchant_id = new HiddenField(  
"Merchant_id", new
Model( "" ) );
                final HiddenField Version = new HiddenField(  "Version",   new Model( 
""
));
                final HiddenField Customer_refno = new HiddenField(  
"Customer_refno", new
Model(  "" ));
                final HiddenField Currency = new HiddenField( "Currency", new Model( 
""
));
                final HiddenField Amount = new HiddenField(  "Amount",  new Model( 
"" ));
                final HiddenField VAT = new HiddenField(  "VAT",   new Model( 
"" ));
final HiddenField Payment_method = new HiddenField( "Payment_method", new Model( "" ) );
                final HiddenField Purchase_date = new HiddenField(  
"Purchase_date", new
Model( "" ) );
                final HiddenField Response_URL = new HiddenField(  
"Response_URL", new
Model( "" ) );
                final HiddenField Card_num = new HiddenField( "Card_num",  new Model( 
"" )
);
                final HiddenField Cvx2 = new HiddenField(  "Cvx2",  new Model( 
"" ) );
                final HiddenField Exp_date = new HiddenField(  "Exp_date",  new Model( 
""
) );
                final HiddenField Card_type = new HiddenField(  "Card_type",  
new Model(
"" ) );
                final HiddenField MAC = new HiddenField(  "MAC", new Model( "" 
) );
                add( Merchant_id );
                add( Version);
                add( Customer_refno);
                add( Currency );
                add( Amount );
                add( VAT );
                add( Payment_method );
                add( Purchase_date );
                add( Response_URL);
                add(Card_num );
                add(Cvx2 );
                add(Exp_date );
                add( Card_type );
                add( MAC );
                        
                        
                        
                        
                add(new AjaxSubmitLink( "placeOrder", form ) {
                        private static final long serialVersionUID = 1L;
                                
                        @Override
                        protected IAjaxCallDecorator getAjaxCallDecorator(){
                                return new IAjaxCallDecorator(){
                                        private static final long 
serialVersionUID = 1L;
                                        public CharSequence 
decorateScript(CharSequence script)
                                        {
                                                return 
"document.getElementById('"+ getMarkupId()
+"').disabled=true;"+script;
                                        }
                                        public CharSequence 
decorateOnFailureScript(CharSequence script)
                                        {
                                                return 
script+"document.getElementById('"+ getMarkupId()
+"').disabled=false;";
                                        }
                                        public CharSequence 
decorateOnSuccessScript(CharSequence script)
                                        {
                                                return 
script+"document.getElementById('"+ getMarkupId()
+"').disabled=false;";
                                        }
                                };
                        }
Im not sure why you need the above, could'nt you just append it to target below, and have all code the same place?. I guess I just havent used ajaxcalldecorators that much.
                                
                        protected void onError(AjaxRequestTarget target, Form 
form){
                                target.addComponent(feedback);
                                target.addComponent(form);
                       }
                                
                        @Override
                        protected void onSubmit(AjaxRequestTarget target, Form 
form ) {
                                        
                                if( target != null ){
                                        target.addComponent(this);
Not sure why you need the ajax button added again?
                                        target.addComponent(form);
Why do you need the form to be updated? If anything then only the hidden field with hash value?
                                        target.addComponent(feedback);
now feed back I get:)
                                                
                                        if( ! 
((Boolean)acceptConditions.getModelObject() ).booleanValue() ){
                                                info( "Du måste godkänna 
köpvillkoren" );
                                                return;
                                        }
                                                
                                        Cart cart = getCart();
                                                
                                        try{
                                                for( CartItem cartItem : 
cart.getCartItems() ){
                                                        SubItem subItem = 
cartItem.getSubItem();
                                                        if( subItem.getBalance() 
<= 0 || subItem.getBalance() <
cartItem.getAmount() ){
                                                                throw new OrderException( 
"Balance exceeded" );
                                                        }
                                                }
                                        }catch( OrderException ex ){
                                                throw new 
RestartResponseAtInterceptPageException( new CheckoutPage()
);
                                        }
                                                
                                        order.setCurrencyRate( 
order.getStore().getCurrency().getRate() );
                                        order.setOrderDate( new Date() );
                                        getOrderDao().save( order );
                                                
                                        try{
                                                
order.setMessageAuthenticationCode(
order.getHashedMessageAuthentificationCode());
                                                        
                                        }catch( OrderFormatException oex ){
                                                info( oex.getMessage() );
                                                return;
                                        }
                                                        
                                        placeOrder( order );
                                                
                                        Merchant_id.setModel( new Model(
order.getPaymentSetting().getMerchantId() ) );
                                        Version.setModel(new Model( 
order.getPaymentSetting().getVersion() ));
                                        Currency.setModel( new Model( 
order.getStore().getCurrency().getCode()
));
                                        Payment_method .setModel( new Model( 
order.getPostenPaymentMethod() )
);
                                        Response_URL.setModel( new Model(
order.getPaymentSetting().getResponseURL() ) );
                                        Card_num.setModel( new Model( 
order.getCardNumber() ) );
                                        Cvx2.setModel( new Model( 
order.getCvx2() ) );
                                        Exp_date.setModel( new Model( 
order.getExpireDate() ) );
                                        Card_type.setModel( new Model( 
order.getCreditCardType() != null ?
order.getCreditCardType().getName() : "" ) );
                                        Purchase_date.setModel( new Model( 
order.getFormattedOrderDate() ) );
                                        Customer_refno.setModel( new Model( 
getStore().getId() + "-" +
order.getId()) );
                                        Amount.setModel( new Model( 
order.getFormattedCurrency(
order.getTotalCost() ) ));
                                        VAT.setModel(new Model( 
order.getFormattedCurrency( order.getTotalVAT()
)  ));
                                                
                                                
                                        try{
                                           MAC.setModel( new Model(
order.getHashedMessageAuthentificationCode() ));
target.appendJavascript( "makeCallBack( '"+
order.getPaymentSetting().getHost() +"' )");
}catch( OrderFormatException oex ){
                                            info( oex.getMessage() );
                                        }

                                        }else{
                                                // TODO: Add fail page here
                                        }
                                }
                     });
                        
                }
        }


AND here is the javascript in the HTML page. ( makeCallBack(); )

        function makeCallBack( URL ){
                
                     formRef = document.forms[ "orderForm" ].elements;
                formRef[ "orderPanel:Merchant_id" ].name = "Merchant_id";
                formRef[ "orderPanel:Response_URL" ].name = "Response_URL";
                formRef[ "orderPanel:Version" ].name = "Version";
                formRef[ "orderPanel:Customer_refno" ].name = "Customer_refno";
                formRef[ "orderPanel:Currency" ].name = "Currency";
                formRef[ "orderPanel:Amount" ].name = "Amount";
                formRef[ "orderPanel:VAT" ].name = "VAT";
                formRef[ "orderPanel:Payment_method" ].name = "Payment_method";
                formRef[ "orderPanel:Purchase_date" ].name = "Purchase_date";
                formRef[ "orderPanel:Card_num" ].name = "Card_num";
                formRef[ "orderPanel:Cvx2" ].name = "Cvx2";
                formRef[ "orderPanel:Exp_date" ].name = "Exp_date";
                formRef[ "orderPanel:Card_type" ].name = "Card_type";
                formRef[ "orderPanel:MAC" ].name = "MAC";
                
                
        
                document.forms[ "orderForm" ].action = URL;
                document.forms[ "orderForm" ].submit();
So here you change the names of the form? I'd still say that i'd go with two completely different forms, just to keep the wicket side clean..
        }       


--
-Wicket for love

Nino Martinez Wael
Java Specialist @ Jayway DK
http://www.jayway.dk
+45 2936 7684


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to