Thanks for the tip. That worked! That was too easy. :-)
--
Jason
David Bernard-2 wrote:
>
> Hi,
>
> Have you try to extend NonCachingImage instead of Image (and comments
> setHeaders(...))?
>
> /david
>
> Jason Mihalick wrote:
>> I am integrating JFreeChart into my application and I've followed the
>> JFreeChart example on the wiki. That works very nicely. I was
>> impressed.
>> What I want to do now is update the graph that I display based on the
>> selection from a drop down list. I've successfully added the
>> DropDownChoice
>> component and added a AjaxFormComponentUpdatingBehavior to it. I've
>> verified that my onUpdate( AjaxRequestTarget ) method is being invoked
>> and
>> I'm receiving the updated value, which is very cool. Here is my onUpdate
>> implementation for the DropDownChoice control:
>>
>> protected void onUpdate( AjaxRequestTarget target ) {
>> log.debug( "graphStyles onUpdate invoked! SelectedGraphStyle = " +
>> FieldResultsPanel.this.getSelectedGraphStyle() );
>> FieldResultsPanel.this.updateGraph(); // Update the model and
>> re-create
>> the JFreeChart Image
>>
>> // fieldGraph is my JFreeChartImage instance (derived from Image)
>> // This is supposed to indicate back to the browser that the image
>> needs
>> updated. I think this
>> // is working properly
>> target.addComponent( FieldResultsPanel.this.fieldGraph );
>> }
>>
>> Even though I am updating the model of my JFreeChartImage, it appears
>> that
>> the getImageData method is never invoked afterwards.
>>
>> What do I need to do in order to get the image data to be re-read?
>>
>> Here is my JFreeChartImage class:
>>
>> public class JFreeChartImage extends Image {
>>
>> private static final Logger log = LoggerFactory.getLogger(
>> JFreeChartImage.class );
>>
>> private int width;
>> private int height;
>>
>> public JFreeChartImage( String id ) {
>> super( id );
>> }
>>
>> public JFreeChartImage( String id, int width, int height ) {
>> this( id );
>> this.width = width;
>> this.height = height;
>> }
>>
>> public JFreeChartImage( String id, JFreeChart chart, int width, int
>> height
>> ) {
>> super(id, new Model( chart ) );
>> this.width = width;
>> this.height = height;
>> }
>>
>> public Component setModel( JFreeChart chart ) {
>> log.debug( "setModel invoked with chart: " + chart );
>> return super.setModel( new Model( chart ) );
>> }
>>
>> @Override
>> protected Resource getImageResource() {
>>
>> return new DynamicImageResource(){
>> private static final long serialVersionUID = 1L;
>>
>> @Override
>> protected byte[] getImageData() {
>> log.debug( "Invoking getImageData..." );
>> JFreeChart chart = (JFreeChart)getModelObject();
>> log.debug( "Chart object: " + chart );
>> return toImageData( chart.createBufferedImage( width, height ) );
>> }
>>
>> @Override
>> protected void setHeaders( WebResponse response ) {
>> if ( isCacheable() ) {
>> super.setHeaders(response);
>> } else {
>> response.setHeader( "Pragma", "no-cache" );
>> response.setHeader( "Cache-Control", "no-cache" );
>> response.setDateHeader( "Expires", 0 );
>> }
>> }
>> };
>> }
>>
>> Any help is much appreciated!
>>
>> --
>> Jason
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
--
View this message in context:
http://www.nabble.com/Updating-a-Dynamic-Image-with-AJAX-%28and-JFreeChart%29-tf4517009.html#a12885649
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]