I know this code is a little long. My problem is that if the popupwindow get called twice then all the data is null afterwards.
public class StorePage extends BaseAdministrationPage { private Brand brand; private Store store; private BrandTranslation brandTranslation; private BrandPresentation brandPresentation; public StorePage( Brand brand, Store store ){ this.brand = getBrandDao().getBrand( brand.getId() ); this.store = getStoreDao().getStoreById( store.getId() ); add( new Label( "storeName" , getStore().getName() ) ); initiateTranslation(); initiatePresentation(); final CSSFeedbackPanel panel = new CSSFeedbackPanel( "feedback" ); panel.setOutputMarkupId(true); add( panel ); final FileUploadField overviewImage = new FileUploadField( "overviewImage" ); final FileUploadField backgroundImage = new FileUploadField( "backgroundImage" ); final FileUploadField promotionImage = new FileUploadField( "promotionImage" ); Form brandForm = new Form( "brandForm" ){ private static final long serialVersionUID = 1L; @Override protected void onSubmit() { final FileUpload uploadOverviewImage = overviewImage.getFileUpload(); final FileUpload uploadBackgroundImage= backgroundImage.getFileUpload(); final FileUpload uploadPromotionImage = promotionImage.getFileUpload(); /** * If the brand is new check that both files will be uploaded */ if( getBrandPresentation().getId() == null ){ if ( uploadOverviewImage == null || uploadBackgroundImage == null || uploadPromotionImage == null ){ info( "Please upload all images" ); return; } } if( uploadOverviewImage != null ){ FileResource resource = newFileResource(new File( getHairlessApplicationSettings().getBrandFolder(), UUID.randomUUID() + "." + FileType.getFileExtension( uploadOverviewImage.getClientFileName() )),uploadOverviewImage); if( resource == null ){ info( "Could not upload overview file" ); return; }else{ getBrandPresentation().setOverviewImage( resource ); } } if( uploadBackgroundImage != null ){ FileResource resource = newFileResource(new File( getHairlessApplicationSettings().getBrandFolder(), UUID.randomUUID() + "." + FileType.getFileExtension( uploadBackgroundImage.getClientFileName() )),uploadBackgroundImage); if( resource == null ){ info( "Could not upload background image" ); return; }else{ getBrandPresentation().setBackgroundImage( resource ); } } if( uploadPromotionImage != null ){ FileResource resource = newFileResource(new File( getHairlessApplicationSettings().getBrandFolder(), UUID.randomUUID() + "." + FileType.getFileExtension( uploadPromotionImage.getClientFileName() )),uploadPromotionImage); if( resource == null ){ info( "Could not upload background image" ); return; }else{ getBrandPresentation().setPromotionImage( resource ); } } String code = getHexCode( getBrandPresentation().getTextColor()); getBrandPresentation().setTextColor(code); code = getHexCode( getBrandPresentation().getBackgroundColor()); getBrandPresentation().setBackgroundColor( code); code = getHexCode( getBrandPresentation().getHeadlineColor()); getBrandPresentation().setHeadlineColor( code); getTranslationDao().save( getBrandTranslation() ); getPresentationDao().save( getBrandPresentation() ); info( "Brand updated!" ); } }; /** Adding data for translation */ TextArea shortDescription = new TextArea( "shortDescription", new PropertyModel( getBrandTranslation(), "shortDescription" ) ); TextArea longDescription = new TextArea( "longDescription", new PropertyModel( getBrandTranslation(), "longDescription" ) ); TextArea promotionText = new TextArea( "promotionText", new PropertyModel( getBrandTranslation(), "promotionText" ) ); CheckBox inPromotion = new CheckBox( "inPromotion" , new PropertyModel( getBrandTranslation(), "inPromotion" )); shortDescription.add( StringValidator.lengthBetween( 1, 500 )); shortDescription.setRequired( true ); longDescription.add( StringValidator.lengthBetween( 1, 1000 )); longDescription.setRequired( true ); promotionText.add( StringValidator.lengthBetween( 1, 500 )); promotionText.setRequired( true ); brandForm.add( shortDescription ); brandForm.add( longDescription ); brandForm.add( inPromotion ); brandForm.add( promotionText ); /** Adding data for presentation */ /** Text color */ TextField textColor = new TextField( "textColor",new PropertyModel( getBrandPresentation(), "textColor" ) ); textColor.add( new ColorValidator( getBrandPresentation().getTextColor() )); textColor.add( StringValidator.exactLength(7)); textColor.setRequired( true ); /** Headline color */ TextField headlineColor = new TextField( "headlineColor",new PropertyModel( getBrandPresentation(), "headlineColor" ) ); headlineColor.add( new ColorValidator( getBrandPresentation().getHeadlineColor() )); headlineColor.add( StringValidator.exactLength(7)); headlineColor.setRequired( true ); /** background color */ TextField backgroundColor = new TextField( "backgroundColor",new PropertyModel( getBrandPresentation(), "backgroundColor" ) ); backgroundColor.add( new ColorValidator( getBrandPresentation().getBackgroundColor() )); backgroundColor.add( StringValidator.exactLength(7)); backgroundColor.setRequired( true ); brandForm.add( promotionImage ); brandForm.add( backgroundImage ); brandForm.add( overviewImage ); brandForm.add( textColor ); brandForm.add( backgroundColor ); brandForm.add( headlineColor ); add( brandForm ); PopupSettings popupSettings = new PopupSettings(); Link promotionImageLink = new Link( "promotionImageLink" ){ private static final long serialVersionUID = 1L; @Override public void onClick() { BrandPresentation pres = getPresentationDao().getPresentation( getStore(), getBrand( )); setResponsePage(new ImageWindow( pres.getPromotionImage().getId() )); } @Override public boolean isEnabled(){ if( getBrandPresentation().getId() != null ) return true; return false; } }; promotionImageLink.setPopupSettings( popupSettings ); brandForm.add( promotionImageLink ); Link deleteLink = new Link( "delete" ){ private static final long serialVersionUID = 1L; @Override public void onClick(){ getBrandDao().detachBrandFromStore( getBrand(),getStore() ); setResponsePage( new BrandPage( getBrand() )); } @Override public boolean isVisible(){ if(getBrandPresentation().getId() != null ){ return true; } return false; } }; deleteLink.add( new SimpleAttributeModifier( "onclick" , "return confirm( 'Are you sure?' );" )); add( deleteLink ); add(new Link( "back" ){ private static final long serialVersionUID = 1L; @Override public void onClick(){ setResponsePage( new BrandPage( getBrand() )); } } ); IModel unusedStoresModel = new LoadableDetachableModel(){ private static final long serialVersionUID = 1L; protected Object load() { return getStoreDao().getUnusedStores( getBrand() ); } }; final DropDownChoice unusedStoresChoice = new DropDownChoice( "unusedStoresChoice", new Model( "" ),unusedStoresModel, new StoreChoiceRenderer()){ private static final long serialVersionUID = 1L; @Override protected java.lang.CharSequence getDefaultChoice(final Object selected){ return "<option value=\"\">--- Copy to store ---</option>"; } @Override public boolean isVisible(){ if( getChoices().size() > 0 && getBrandTranslation().getId() != null ){ return true; } return false; } }; Form copyForm = new Form( "copyForm" ); copyForm.add( unusedStoresChoice ); IndicatingAjaxButton ajaxBtn = new IndicatingAjaxButton("copy", copyForm ){ 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;"; } }; } protected void onSubmit(AjaxRequestTarget target, Form form){ this.setEnabled(false); target.addComponent(this); target.addComponent(panel); Store toStore = (Store )unusedStoresChoice.getModelObject(); if( toStore != null ){ getBrandDao().copyBrand( getBrand().getId(), getStore().getId(), toStore.getId() ); setResponsePage( new StorePage( getBrand(), toStore )); } this.setEnabled( true ); } protected void onError(AjaxRequestTarget target, Form form) { target.addComponent(panel); } @Override public boolean isVisible(){ return unusedStoresChoice.isVisible(); } }; ajaxBtn.setOutputMarkupId( true ); copyForm.add( ajaxBtn ); add( copyForm ); } public void initiateTranslation(){ brandTranslation = getTranslationDao().getTranslation( getStore(), getBrand( )); if( brandTranslation == null ){ brandTranslation = new BrandTranslation(); brandTranslation.setName( getBrand().getName() ); brandTranslation.setBrand( getBrand() ); brandTranslation.setStore( store ); } } public void initiatePresentation(){ brandPresentation = getPresentationDao().getPresentation( getStore(), getBrand( )); if( brandPresentation == null ){ brandPresentation = new BrandPresentation(); brandPresentation.setBackgroundColor( "#FFFFFF" ); brandPresentation.setHeadlineColor( "#FFFFFF" ); brandPresentation.setTextColor( "#FFFFFF" ); brandPresentation.setBrand( getBrand() ); brandPresentation.setStore( store ); } } private String getHexCode( String decode ){ try{ java.awt.Color color = java.awt.Color.decode( decode ); String red = Integer.toHexString(color.getRed()); String green = Integer.toHexString(color.getGreen()); String blue = Integer.toHexString(color.getBlue()); if (red.length() == 1) red = "0" + red; if (green.length() == 1) green = "0" + green; if (blue.length() == 1) blue = "0" + blue; String hexColor = "#" + red + green + blue; return hexColor; }catch( NumberFormatException nex ){ } return null; } public Brand getBrand() { return brand; } public Store getStore() { return store; } public BrandTranslation getBrandTranslation() { return brandTranslation; } public BrandPresentation getBrandPresentation() { return brandPresentation; } } -- View this message in context: http://www.nabble.com/Very-annoing-error-tp17323755p17323755.html Sent from the Wicket - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]