Как обработать ответ типа image / gif на стороне клиента, используя GWT - PullRequest
0 голосов
/ 19 ноября 2009

У меня вопрос о том, как обрабатывать ответы типа image / gif на стороне клиента, любое предложение будет отличным Есть сервис, который отвечает за извлечение изображения (только по одному каждый раз в данный момент) из базы данных. Код что-то вроде,

    JDBC Connection
    Construct MYSQL query. 
    Execute query
    If has ResultSet, retrieve first one {
    //save image into Blob image, “img” is the only entity in the image table.
    image = rs.getBlob("img"); 
} 

    response.setContentType("image/gif");   //set response type
    InputStream in = image.getBinaryStream();   //output Blob image to InputStream
    int bufferSize = 1024;  //buffer size
    byte[] buffer = new byte[bufferSize];       //initial buffer
    int length =0;
    //read length data from inputstream and store into buffer   
    while ((length = in.read(buffer)) != -1) {
        out.write(buffer, 0, length);       //write into ServletOutputStream 
    }
    in.close();
    out.flush(); //write out

код на стороне клиента

    ....
    imgform.setAction(GWT.getModuleBaseURL() + "serviceexample/ImgRetrieve"); 
    ....
    ClickListener {
        OnClick, then imgform.submit();
    }


    formHandler {

    onSubmit, form validation

    onSubmitComplete
        ??????? //handle response, and display image
            **Here is my question, i had tried 
            Image img = new Image(GWT.getHostPageBaseURL() +"serviceexample/ImgRetrieve");
            mg.setSize("300", "300");
            imgpanel.add(img);
            but i only got a non-displayed image with 300X300 size.**
    }

Итак, как мне обращаться с ответом в этом случае?

Спасибо

1 Ответ

1 голос
/ 19 ноября 2009

Ваш вопрос очень неясен ... Я вижу комбинацию старых форм HTML / submit и кода GWT.

Обычному приложению GWT нужно только разместить виджет Image где-то в вашем пользовательском интерфейсе, который ссылается на URL сервиса изображений, который вы описали.

Как или когда показывать изображение зависит от вас. Но все, что вам нужно сделать, чтобы получить изображение, показанное в вашем браузере, это сделать

Image img = new Image( [url to image service] );
panel.add( img );

где панель - это панель, которая уже отображается.

Если вы хотите дождаться показа изображения, пока пользователь не нажмет какую-либо кнопку, сделайте следующее:

button.addClickHandler( new ClickHandler() {
  public void onClick( ClickEvent e ) {
    Image img = new Image( [url to image service] );
    panel.add( img );
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...