2

fileUpload を使用する必要がある Web アプリケーションを作成しました。

ファイルとそのプロパティをサーバーに送信する必要があります。ファイルの送信には FormPanel を使用し、プロパティには RPC を使用しました。

public void onModuleLoad() {
    final FileServiceEndPoint serviceEndPoint = new FileServiceEndPoint();
    new AddDocument();
    Button b = new Button("addDocument");
    b.addClickHandler(new ClickHandler() {
        private Map<String, String> docProperty;
        public void onClick(ClickEvent event) {
            docProperty =getProperties();
            AsyncCallback<String> callback = new AsyncCallback<String>() {
                public void onSuccess(String result) {
                    System.out.println("he ha" +result);
                }
                public void onFailure(Throwable caught) {

                }
            };
            serviceEndPoint.uploadAttachement(docProperty, callback);
        }
    });
    RootPanel.get().add(b);
}

この新しい AddDocument(); ファイルをアップロードするためのコードが含まれています (formPanel コード)

private FormPanel getFormPanel() {
        if (uploadForm == null) {
            uploadForm = new FormPanel();
            uploadForm.setAction(GWT.getHostPageBaseURL() +"TestUploadFileServlet");
            uploadForm.setEncoding(FormPanel.ENCODING_MULTIPART);
            uploadForm.setMethod(FormPanel.METHOD_POST);
            uploadForm.setWidget(getFileUpload());

            System.out.println(GWT.getHostPageBaseURL() +"TestUploadFileServlet");

            uploadForm.addFormHandler(new FormHandler() {

                public void onSubmitComplete(FormSubmitCompleteEvent event) {
                    AddDocument.this.hide(true);        
                }

                public void onSubmit(FormSubmitEvent event) {
                }
            });


        }
        return uploadForm;
    }

private Button getAddButton() {
        if (addButton == null) {
            addButton = new Button("ADD");
            addButton.addClickHandler(new ClickHandler() {
                public void onClick(ClickEvent event) {
                    uploadForm.submit();
                }
            });
            addButton.setText("Add");

        }

Sending プロパティのインターフェイスを作成します。

エンドポイント:

public class FileServiceEndPoint implements FileServiceAsync{

FileServiceAsync service = (FileServiceAsync)GWT.create(FileService.class);
ServiceDefTarget endpoint = (ServiceDefTarget) service;

public FileServiceEndPoint() {
endpoint.setServiceEntryPoint(GWT.getHostPageBaseURL() + “TestUploadFileServlet”);
}

public void uploadAttachement(Map docProperty,
AsyncCallback callback) {
service.uploadAttachement(docProperty, callback);
}
}

サーバー上:

public class FileUploadImpl extends RemoteServiceServlet implements FileService {

private static final long serialVersionUID = 1L;
private static final Logger log = Logger.getLogger(FileUploadImpl.class
.getName());

String a;
protected void service(final HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {

a=”5″;
System.out.println(“ServletWorking Fine “);
}
public String uploadAttachement(Map docProperty) {
// TODO Auto-generated method stub
return “Checked”;
}
}

formPanel.submit をデバッグすると、デバッガーがサーバーに入り、 ServletWorking Fine を出力します(これは完璧です)

addPropertiesボタンをデバッグすると、サーバーに送られ、ServletWorking Fineが出力されます。しかし、それはサービスメソッドに入るべきではありません. デバッガーは UploadAttachement に入る必要があります。

同じサーブレットを使用して hashMap を渡す方法を教えてください。

4

0 に答える 0