Tekst zadatka: Napraviti Tapestry aplikaciju kojoj uploadujemo zip fajl. Aplikacija raspakuje fajl u neki
unapred zadati foler i na strani prikaže spisak svih fajlova iz tog foldera.
Napomena: Aplikacija ovo treba da radi pomoæu Ajax tehnologije što znaèi da ne prikazuje novu
stranu veæ da to radi asinhrono na istoj strani. Što znaèi da na istoj strani se uploaduje fajl i kada se
upload završi odreðen deo strane prikaže informaciju o sadržaju fajla.
I ja sam uradio da se odabrani zip raspakuje, ali nikako da uspem da prikazem listu na strani. Znam to treba pomocu @InjectComponent... ali nikako da to uradim kako treba vec dva dana se maltretiram i nikako da resim evo ovo je kod.
Index.java
package cs230.bi175.dz01.pages;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.corelib.components.Zone;
import org.apache.tapestry5.upload.services.UploadedFile;
/**
*
* @author Marko Strainovic
*/
public class Index {
@Property
private UploadedFile file;
@InjectComponent
private Zone spisak;
@Property
private List<String> fileList;
private static final String OUTPUT_FOLDER = "C:\\outputzip";
public Object onSuccess() {
dekompresija(file.getFilePath(), OUTPUT_FOLDER);
return spisak;
}
/**Raspakuje zip file na unapred definisanu lokaciju
*
* @param zipFile - fajl koji treba raspakovati
* @param outputFolder - folder u koji ce zipFile biti raspakovan
*/
public void dekompresija(String zipFile, String outputFolder){
byte[] buffer = new byte[1024];
try{
//creira output direktorijum ako ne postoji
File folder = new File(OUTPUT_FOLDER);
if(!folder.exists()){
folder.mkdir();
}
//uzima sadrzaj zip fajla
ZipInputStream zis =
new ZipInputStream(new FileInputStream(zipFile));
//uzima listu zipovane datoteke
ZipEntry ze = zis.getNextEntry();
while(ze!=null){
String fileName = ze.getName();
File newFile = new File(outputFolder + File.separator + fileName);
System.out.println("file unzip : "+ newFile.getAbsoluteFile());
//kreira sve nepostojece foldere
//inace se dobija FileNotFoundException za kompresovane foldere
new File(newFile.getParent()).mkdirs();
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
ze = zis.getNextEntry();
}
zis.closeEntry();
zis.close();
System.out.println("Done");
}catch(IOException ex){
ex.printStackTrace();
}
}
}
Index.tml
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>${message:title}</title>
</head>
<body>
<h1>${message:title}</h1>
<t:form>
<t:errors/>
<input t:type="upload" t:id="file" validate="required"/>
<br/>
<input type="submit" value="Upload"/>
</t:form>
<t:zone t:id="spisak" id="spisak">
</t:zone>
</body>
</html>
Da li neko zna gde gresim, odnosno sta fali?