В данный момент решаю аналогичную задачу ! что получается Если вы берете GWT то просто следуете примеру описанному тут GWT file uploadесли используете чистое GXT то когда создаете то идете по аналогичному пути : Сервлет точно такой же как и в примере выше ... ничего не меняем .. грузить файлы через Код | public class GWTServiceImpl extends RemoteServiceServlet implements GWTService
|
скорее всего не получиться - так как там метода doPost final . На что следует обратить внимание при таком подходе ( года вы работаете с чистым GXT ) - это : Указать ему путь Код |
final String myurl = GWT.getModuleBaseURL() + "FileUploadServlet";
panel.setAction(myurl);
|
у FileUploadField есть ряд недостатков .. - кнопку submit просто обернули красивыми стилями - при этом окно загрузки файла будет вызываться даже если кнопка не доступна или , вызов окна происходит даже если вы промахнетесь мимо кнопки и кликните рядом (место между текстовым полем и кнопкой) Вопрос для Всех кто пользуется GXT загрузчиком вместо GWT как понять что контент загрузился ? в GWT для этого есть onSubmitComplete! а что есть в GXT у её FormPanel? Подскажите!!! Код | addFormHandler(new FormHandler() {
@Override public void onSubmit(FormSubmitEvent event) { // if (something_is_wrong) { // Take some action // event.setCancelled(true);
System.out.println("event " + event.toString()); // } }
@Override public void onSubmitComplete(FormSubmitCompleteEvent event) { Window.alert(event.getResults()); System.out.println("event res = " + event.getResults()); } });
|
Код |
package org.yournamehere.client.tabcomponent; import com.extjs.gxt.ui.client.Style.HorizontalAlignment; import com.extjs.gxt.ui.client.event.BaseEvent; import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.util.Margins; import com.extjs.gxt.ui.client.widget.Info; import com.extjs.gxt.ui.client.widget.Window; import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.form.FileUploadField; import com.extjs.gxt.ui.client.widget.form.FormPanel; import com.extjs.gxt.ui.client.widget.form.FormPanel.Encoding; import com.extjs.gxt.ui.client.widget.form.FormPanel.Method; import com.extjs.gxt.ui.client.widget.form.TextField; import com.extjs.gxt.ui.client.widget.layout.FitLayout; import com.extjs.gxt.ui.client.widget.layout.FormData; import com.extjs.gxt.ui.client.widget.layout.FormLayout; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Element; /** * * @author ISalnikov */ public class FileUploadWindow extends Window{
private CwTabConstants constants = CwTabConstants.Util.getInstance(); private final FormPanel panel; public FileUploadWindow() { setSize(350, 200); setPlain(false); setModal(true); setBlinkModal(true); setHeading("Window"); FormLayout layout = new FormLayout(FormPanel.LabelAlign.RIGHT); layout.setDefaultWidth(300); layout.setLabelWidth(70); layout.setLabelPad(5); setLayout(layout); final String myurl = GWT.getModuleBaseURL() + "FileUploadServlet"; panel = new FormPanel(); panel.setHeaderVisible(false); panel.setBodyBorder(false); panel.setBorders(false); panel.setAction(myurl); panel.setEncoding(Encoding.MULTIPART); panel.setMethod(Method.POST); panel.setButtonAlign(HorizontalAlignment.CENTER); panel.setWidth(350); FormData data = new FormData("100%"); data.setMargins(new Margins(5)); TextField<String> name = new TextField<String>(); name.setFieldLabel("Name"); panel.add(name ,data ); FileUploadField file = new FileUploadField(); file.setAllowBlank(false); file.setName("uploadFormElement"); file.setId("uploadFormElement"); file.setFieldLabel("File"); panel.add(file,data); add(panel,data); Button btnLoad = new Button(constants.btnSubmit()); btnLoad.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override public void componentSelected(ButtonEvent ce) { Info.display("submit", "submit"); panel.submit(); } }); Button btnReset = new Button(constants.btnReset()); btnReset.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override public void componentSelected(ButtonEvent ce) { Info.display("reset", "reset"); panel.reset(); } }); panel.addListener(Events.Submit, new Listener<BaseEvent>() {
@Override public void handleEvent(BaseEvent be) { System.out.println("Submit panel " ); } }); setButtonAlign(HorizontalAlignment.LEFT); addButton(btnLoad); addButton(btnReset); }
public void clearFields() { if(this!= null && panel!= null) { panel.clear(); } } }
|
|