2011-07-25 11 views
5

en mi proyecto GWT que me gustaría:filtros y controladores para FileUpload

  1. establecer un filtro para el widget FileUpload de modo que sólo acepta archivos JPG.

  2. Habilite myButton si el widget FileUpload, llamado chooser, tiene cualquier archivo elegido. Y desactivar myButton de lo contrario.

Este es mi código para el punto 2, pero no funciona. ¿Algunas ideas? ¡Gracias por adelantado!

chooser.addAttachHandler(new Handler() { 
public void onAttachOrDetach(AttachEvent event) { 
if(chooser.isAttached()==false && myButton.isEnabled()==true) 
    myButton.setEnabled(false); 
else if(chooser.isAttached()==true && myButton.isEnabled()==false) 
    myButton.setEnabled(true); 
} }); 

Respuesta

2

@ Punto 1: creo que no es posible filtrar qué archivos se pueden elegir. La única manera para mí se compara en el controlador de formulario, por ejemplo:

form.addFormHandler(new FormHandler(){ 
    public void onSubmit(FormSubmitEvent event){ 
     if(!extension.equals("pdf")) { 
     // Error 
     } else { 
     // Submit 
     } 
    } 
} 

Otra solución es utilizar ExtGWT con FileValidator:

fileUpload = new FileUploadField(); 
fileUpload.setWidth("240"); 
fileUpload.setValidator(new FileValidator()); 
fileUpload.setName("file"); 
fileUpload.setAccept("pdf"); 

@Point 2: el chooser.isAttached() es Condición incorrecta. Necesito verificar si el campo de entrada está vacío.

+0

Gracias por su ayuda! @ 1, este no es un objeto Form, es solo un objeto FileUpload. Entonces, ¿cuál sería el controlador correcto para establecer el filtro? @ 2, ¿qué controlador debo usar para saber que el estado del objeto FileUpload ha cambiado (archivo adjunto o desvinculado) y luego realizar la acción del botón en ese momento? – Arturo

+1

@ 1: sí, pero FileUpload se debe agregar a un formulario, que será submitet. Y para el formulario puede usar el addFormHandler @ 2: realmente no tengo idea :) probaría algo como chooser.getElement (0) (o 1 o 2 etc ... hasta que obtenga el campo de entrada). Y después de obtenerlo, puede intentar algo como inputField.getText() y compararlo. – cupakob

3

que incluía una línea como la siguiente:

fileUpload.getElement().setAttribute("accept", "image/png, image/gif,image/jpeg"); 

Se hizo el trabajo para mí usando GWT FileUpload

Cuestiones relacionadas