powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / extGWT. Загрузка файлов.
19 сообщений из 19, страница 1 из 1
extGWT. Загрузка файлов.
    #37799402
Как с помощью extGWT сделать загрузку файлов на сервер?
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37800066
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полярный Волк,

Using FileUploadField (Ext GWT)
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37836832
Форма есть, но собственно как файл то отправить? Где и как указать, где он должен на сервере сохранятся?
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37836834
При добавлении файла в форме, в строке File прописывается путь "C:\fakepath\", вместо реального пути. Как сделать, чтоб реальный путь прописывался, ну или хотя бы просто имя файла.
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37837195
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полярный Волк,

Это клиентский виджет, нужно реализовывать server- side логику. Во- первых, раскомментировать -

Код: java
1.
2.
3.
4.
        
...
// panel.submit();
...


, потом добавить -
Код: java
1.
2.
3.
...
panel.setAction(GWT.getModuleBaseURL() + "/myFormHandler");
...



В gwt.xml прописать -
Код: java
1.
2.
3.
...
<servlet path="/myFormHandler" class="com.............MyFormHandler"/>
...



И далее два варианта. Если приложение Spring- based, то в web.xml добавляем -

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
...
	<servlet>
		<servlet-name>someApplication</servlet-name>
		<servlet-class>
			org.springframework.web.servlet.DispatcherServlet
		</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>someApplication</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>
...



В someApplication-servlet.xml -

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<beans>
...    
<bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <value>
                /upload.form=fileUploadController
            </value>
        </property>
    </bean>

    <bean id="fileUploadController" class=".......FileUploadController">
        <property name="commandClass" value="..........FileUploadBean"/>
        <property name="formView" value="fileuploadform"/>
        <property name="successView" value="confirmation"/>
    </bean>
...



Контроллер -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
...
public class FileUploadController extends SimpleFormController {

    protected ModelAndView onSubmit(
        HttpServletRequest request,
        HttpServletResponse response,
        Object command,
        BindException errors) throws ServletException, IOException {

        FileUploadBean bean = (FileUploadBean) command;

         let's see if there's content there
        byte[] file = bean.getFile();
        if (file == null) {
        }
        return super.onSubmit(request, response, command, errors);
    }

    protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder)
        throws ServletException {
        binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());
    }

}

public class FileUploadBean {

    private byte[] file;

    public void setFile(byte[] file) {
        this.file = file;
    }

    public byte[] getFile() {
        return file;
    }
}
...



=================================================================

Вариант с сервлетами - маппинг в дескрипторе развертывания -

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<servlet>
...
    <servlet-name>fileUploaderServler</servlet-name>
    <servlet-class>.........FileUpload</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>fileUploaderServler</servlet-name>
  <url-pattern>/myFormHandler</url-pattern>
</servlet-mapping>
...



, и upload- сервлет -

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
...
public class FileUpload extends HttpServlet{
    public void doPost(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {
        ServletFileUpload upload = new ServletFileUpload();

        try{
            FileItemIterator iter = upload.getItemIterator(request);

            while (iter.hasNext()) {
                FileItemStream item = iter.next();

                String name = item.getFieldName();
                InputStream stream = item.openStream();
              
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                int len;
                byte[] buffer = new byte[8192];
                while ((len = stream.read(buffer, 0, buffer.length)) != -1) {
                    out.write(buffer, 0, len);
                }

                int maxFileSize = 10*(1024*1024);
                if (out.size() > maxFileSize) { 
                    throw new RuntimeException("File is > than " + maxFileSize);
                }
            }
        }
        catch(Exception e){
            throw new RuntimeException(e);
        }

    }
}
...
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37849067
У меня нет таких классов - ServletFileUpload , FileItemIterator , FileItemStream. Где их скачать можно?
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37849073
Нашел и скачал.
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37849131
<servlet path="/myFormHandler" class="com.............MyFormHandler"/>

Какой там путь прописывать, к чему? У меня есть com....client.FileForm (где лежит клиентская форма) и com....server.fileUpload (где лежит код сервлета приведенный Вами).

web.xml :
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
 <servlet>
        <servlet-name>fileUploaderServlet</servlet-name>
        <servlet-class>com.stellasoft.stefane.server.fileUpload</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>fileUploaderServlet</servlet-name>
        <url-pattern>/myFormHandler</url-pattern>
    </servlet-mapping>
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37849155
В общем получилось следующее:
Класс с формой - com.stellasoft.stefane.client.FileForm
Класс с сервлетом - com.stellasoft.stefane.server.fileUpload

web.xml

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
    <servlet>
        <servlet-name>fileUploaderServlet</servlet-name>
        <servlet-class>com.stellasoft.stefane.server.fileUpload</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>fileUploaderServlet</servlet-name>
        <url-pattern>/myFormHandler</url-pattern>
    </servlet-mapping>



gwt.xml

Код: xml
1.
<servlet path="/myFormHandler" class="com.stellasoft.stefane.client.FileForm"/>



Но, что-то ничего не копируется. При выборе файла, указывается почему-то путь C:\fakepath\"имя файла"
Затем жму отправит, пишет, что отправлено, но ничего нет.
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37849170
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте разбираться.

Во- первых, замените-

Код: xml
1.
<servlet path="/myFormHandler" class="com.stellasoft.stefane.client.FileForm"/>



, на
Код: xml
1.
<servlet path="/myFormHandler" class="com.stellasoft.stefane.server.fileUpload"/>
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37849191
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потом, что касается fakepath. Добавьте обработчик на onChange для поля-

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
...
final FileUploadField fileUpload= new FileUploadField() {
   @Override
   protected void onChange(ComponentEvent ce) {
      final String fullPath = getFileInput().getValue();
      final int lastIndex = fullPath.lastIndexOf('\\');
      final String fileName = fullPath.substring(lastIndex + 1);
      setValue(fileName);
   }
};
...
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37849197
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И, что еще немаловажно-

http://msdn.microsoft.com/en-us/library/ms535128%28VS.85%29.aspx Windows Internet Explorer 8 and later. When a file is selected by using the input type=file object, the value of the value property depends on the value of the "Include local directory path when uploading files to a server" security setting for the security zone used to display the Web page containing the input object.

The fully qualified filename of the selected file is returned only when this setting is enabled. When the setting is disabled, Internet Explorer 8 replaces the local drive and directory path with the string C:\fakepath\ in order to prevent inappropriate information disclosure.

To illustrate, suppose you attempt to upload a file named C:\users\contoso\documents\file.txt. When you do this, the value of the value property is set to c:\fakepath\file.txt.

For more information regarding security zones, see About URL Security Zones.
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37849208
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Со Spring тоже поэкспериментируйте, если желание будет. Сервлеты в чистом виде уже рудимент.
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37861119
Теперь такое пишет:
[WARN] 404 - POST /stefane/com.stellasoft.stefane.Stefane//myFormHandler (127.0.0.1) 1439 bytes
Request headers
Host: 127.0.0.1:8888
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
Referer: http://127.0.0.1:8888/Stefane.html?gwt.codesvr=127.0.0.1:9997
Content-Length: 35163
Origin: http://127.0.0.1:8888
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryMXtbYM8uUYGwGAyu
Response headers
Content-Type: text/html; charset=iso-8859-1
Content-Length: 1439
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37861142
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
матерьбожья
господисусе
сколько ж надо чтоб файл закачать )
извините, пятница
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37861163
Да и еще, не знаю важно ли это, я использую extGWT, но по идее у него ж все так же.
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37861388
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
иэксти джидаблюти. Не богохульствуйте, господин grasoff.net, поскольку дьявол в деталях.
..Все верно. ExtGWT - это GXT, надстройка над GWT, SDK которого вы все равно используете, как и компонент хостинга.

1. В *.gwt.xml добавьте-
Код: xml
1.
2.
3.
...
<inherits name='com.extjs.gxt.ui.GXT'/>
...



2. В *.html, если этого нет- замените doctype на корректный для работы с GXT-
Код: xml
1.
2.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
...



3. Добавьте ссылку на стили-
Код: xml
1.
2.
3.
...
<link rel="stylesheet" type="text/css" href="css/gxt-all.css" />
...



4. В клиентском пакете проекта, в классе входной точки разместите код виджета, например, в таком урезанном варианте -
FileUploadApplication.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
package com.ivanov_void.fileupload.client;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.data.BaseModel;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.VerticalPanel;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
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.TextField;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.form.FormPanel.Encoding;
import com.extjs.gxt.ui.client.widget.form.FormPanel.Method;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.FormHandler;
import com.google.gwt.user.client.ui.FormSubmitCompleteEvent;
import com.google.gwt.user.client.ui.FormSubmitEvent;
import com.google.gwt.user.client.ui.RootPanel;

public class FileUploadApplication implements EntryPoint {
  public void onModuleLoad() {
	  final FormPanel form = new FormPanel();
      form.setAction("fileupload");
      form.setEncoding(Encoding.MULTIPART);
      form.setMethod(Method.POST);
      
      // Create a FileUpload widget.
      FileUpload upload = new FileUpload();
      upload.setName("uploadFormElement");
      
      form.add(upload);
      
      Button btn = new Button("Submit");
      btn.addSelectionListener(new SelectionListener<ButtonEvent>() {
    
      @Override
      public void componentSelected(ButtonEvent ce) {
        if (!form.isValid()) {
          return;
        }
        
        form.submit();        
        MessageBox.info("Action", "You file was uploaded", null);
      }
    });
    form.addButton(btn);           
    RootPanel.get().add(form);
  }
}



5. В серверном пакете- наш сервлет, который будет загружать файл -
MyFormHandler.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
package com.ivanov_void.fileupload.server;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
 
/**
 *  
 * @author ivanov-void
 *
 */
public class MyFormHandler extends HttpServlet {
	//
	private static final String TEMP_DIR = "c:\\tmp";
	//
	private File tmpDir;
	//
	private static final String DESTINATION_DIR_PATH ="/files";
	//
	private File destinationDir;
	/**
	 * init servlet in lifecycle
	 * 
	 */
	public void init(ServletConfig config) 
			throws ServletException {
		super.init(config);
		
		tmpDir = new File(TEMP_DIR);
		if(!tmpDir.isDirectory()) throw new ServletException(
				TEMP_DIR + " is not a directory");
		
		String realPath = getServletContext().
			getRealPath(DESTINATION_DIR_PATH);
		
		destinationDir = new File(realPath);
		if(!destinationDir.isDirectory()) 
			throw new ServletException(
					DESTINATION_DIR_PATH+" is not a directory");		
	}
	/**
	 * file upload processing
	 * 
	 */
	protected void doPost(HttpServletRequest request, 
			HttpServletResponse response) 
				throws ServletException, IOException {
	    PrintWriter out = response.getWriter();
	    // conf
	    response.setContentType("text/plain");
 
		DiskFileItemFactory  fileItemFactory = new DiskFileItemFactory ();
		// Set the size threshold, above which content will be stored on disk.
		fileItemFactory.setSizeThreshold(1*1024*1024); //1 MB
		// Set the temporary directory to store the uploaded files of size above threshold.
		fileItemFactory.setRepository(tmpDir);
 
		ServletFileUpload uploadHandler = 
			new ServletFileUpload(fileItemFactory);
		try {
			// Parse the request
			List items = uploadHandler.parseRequest(request);
			Iterator itr = items.iterator();
			while(itr.hasNext()) {
				FileItem item = (FileItem) itr.next();

				// Handle Form Fields.
				if(item.isFormField()) {
					out.println("File Name = "+item.getFieldName()+", " +
							"Value = "+item.getString());
				} else {
					//Handle Uploaded files.
					out.println("Field Name = "+item.getFieldName()+
						", File Name = "+item.getName()+
						", Content type = "+item.getContentType()+
						", File Size = "+item.getSize());

					//Write file to the ultimate location.
					File file = new File(destinationDir,item.getName());
					item.write(file);
				}
				out.close();
			}
		}catch(FileUploadException ex) {
			log("Error encountered while parsing the request",ex);
		} catch(Exception ex) {
			log("Error encountered while uploading file",ex);
		}
	}
}


, веб- сервисы можно убрать оттуда.

6. Верификатор в shared-
FieldVerifier.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
package com.ivanov_void.fileupload.shared;

/**
 * <p>
 * FieldVerifier validates that the name the user enters is valid.
 * </p>
 * <p>
 * This class is in the <code>shared</code> package because we use it in both
 * the client code and on the server. On the client, we verify that the name is
 * valid before sending an RPC request so the user doesn't have to wait for a
 * network round trip to get feedback. On the server, we verify that the name is
 * correct to ensure that the input is correct regardless of where the RPC
 * originates.
 * </p>
 * <p>
 * When creating a class that is used on both the client and the server, be sure
 * that all code is translatable and does not use native JavaScript. Code that
 * is not translatable (such as code that interacts with a database or the file
 * system) cannot be compiled into client side JavaScript. Code that uses native
 * JavaScript (such as Widgets) cannot be run on the server.
 * </p>
 */
public class FieldVerifier {

	/**
	 * Verifies that the specified name is valid for our service.
	 * 
	 * In this example, we only require that the name is at least four
	 * characters. In your application, you can use more complex checks to ensure
	 * that usernames, passwords, email addresses, URLs, and other fields have the
	 * proper syntax.
	 * 
	 * @param name the name to validate
	 * @return true if valid, false if invalid
	 */
	public static boolean isValidName(String name) {
		if (name == null) {
			return false;
		}
		return name.length() > 3;
	}
}



7. Описатель приложения со ссылкой на сервлет- загрузчик с маппингом-
FileUploadApplication.gwt.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='fileuploadapplication'>

  <inherits name='com.google.gwt.user.User'/>
  <inherits name='com.extjs.gxt.ui.GXT'/>  

  <inherits name='com.google.gwt.user.theme.clean.Clean'/>

  <!-- Specify the app entry point class.                         -->
  <entry-point class='com.ivanov_void.fileupload.client.FileUploadApplication'/>

  <!-- Specify the paths for translatable code                    -->
  <source path='client'/>
  <source path='shared'/>

  <!-- Specify handler class.                         -->
  <servlet class='com.ivanov_void.fileupload.server.MyFormHandler' path='/fileupload'/>

</module>



8. Дескриптор развертывания -
web.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<?xml version="1.0" encoding="UTF-8" standalone="no"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee                http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <!-- Servlets &mappings -->

  <servlet>
    <servlet-name>MyFormHandler</servlet-name>
    <servlet-class>com.ivanov_void.fileupload.server.MyFormHandler</servlet-class>
  </servlet>

  <servlet-mapping>
  	<servlet-name>MyFormHandler</servlet-name>
  	<url-pattern>/fileupload</url-pattern>
  </servlet-mapping>
  
  <!-- Default page to serve -->
  <welcome-file-list>
    <welcome-file>FileUploadApplication.html</welcome-file>
  </welcome-file-list>

  <servlet>
    <servlet-name>SystemServiceServlet</servlet-name>
    <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
    <init-param>
      <param-name>services</param-name>
      <param-value/>
    </init-param>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>SystemServiceServlet</servlet-name>
    <url-pattern>/_ah/spi/*</url-pattern>
  </servlet-mapping>

</web-app>



9. В *.html проекта тело оставьте пустым -
Код: html
1.
2.
3.
4.
5.
6.
...
  <body>

   
  </body>
...



10. Ну и собственно все, теперь нужно GWT Compile Project,

11????????
Profit.
...
Рейтинг: 0 / 0
extGWT. Загрузка файлов.
    #37861389
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
extGWT. Загрузка файлов.
    #38438634
Landgraf91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanov-void, есть такой вопрос: каким образом изменен язык кнопки FileUploadField с "Browse..." на "Обзор..."
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / extGWT. Загрузка файлов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]