Bug ? s:fileUpload with h:dataTable
michalf Mar 28, 2008 9:27 AMHello,
I have problem with uploading files.
When I try:
<h:form enctype="multipart/form-data">
<c:forEach items="#{dictionaryTest.tempBuffer}" var="b">
<s:fileUpload contentType="#{b.contentType}" fileName="#{b.filename}" data="#{b.content}">
</s:fileUpload>
</c:forEach>
<h:commandButton action="#{dictionaryTest.upload}" value="Upload"></h:commandButton>
</h:form> Everything is OK. File names and file content in array are different. But when I change to:
<h:form enctype="multipart/form-data">
<h:dataTable value="#{dictionaryTest.tempBuffer}" var="b">
<h:column>
<s:fileUpload contentType="#{b.contentType}" fileName="#{b.filename}" data="#{b.content}">
</s:fileUpload>
</h:column>
</h:dataTable>
<h:commandButton action="#{dictionaryTest.upload}" value="Upload"></h:commandButton>
</h:form>
File names in array are the same,
tempBuffer[0].filename == tempBuffer[1].filename == tempBuffer[0].filename
and file content is not empty only in
tempBuffer[0]
.
The same situation is with using rich:dataTable / rich:column.
Is it a bug ? Why s:fileUpload does not work with h:dataTable ?
@Name("dictionaryTest")
@Stateful
@Scope(ScopeType.SESSION)
public class DictionaryTest implements IDictionaryTest
{
File[] tempBuffer = new File[] {new File(), new File(), new File() } ;
public File[] getTempBuffer() {
return tempBuffer;
}
public void setTempBuffer(File[] tempBuffer) {
this.tempBuffer = tempBuffer;
}
}
@Entity
@Table(name = "FILES")
public class File implements Serializable
{
private Long id;
private byte[] content;
private String contentType;
private String filename;
// setters ang getters
}