About software development for the enterprise. Focus on Java EE and more general Java platforms.
You'll read a lot about Conferences, Java User Groups, Java EE, Integration, AS7, WildFly, EAP and other technologies that hit my road.

Tuesday, May 10, 2011

Enforcing Upload Limits with Primefaces 2.2.1

13:05 Tuesday, May 10, 2011 Posted by Markus Eisele
,
A very short tip I came across lately. If you are looking into enforcing some limits to your upload component:
<p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}"
description="Allowed Files"/>

you are most likely able to use allowTypes and sizeLimit attributes. But what about enforcing project wide settings without repeating this in any faces template over and over again?
Simple as you might guess: Write your own component. All you have to do is to extend the org.primefaces.component.fileupload.FileUpload component a bit like this:

public class ExcludeListPrimeFileUpload extends FileUpload {
public ExcludeListPrimeFileUpload() {
super();

// allowed file-types
setAllowTypes("*.doc;*.docx;*.pdf;*.ppt;*.pptx;*.zip;*.txt");
//size limit 30 megabyte = 31 457 280 bytes
setSizeLimit(new Long(31457280));
}
}

and register it as a replacement for the org.primefaces.component.FileUpload component-type with your faces-config.xml.
<component-type>org.primefaces.component.FileUpload</component-type>
<component-class>net.eisele.test.primetest.ExcludeListPrimeFileUpload</component-class>
</component>

If you use the Browsee Button you now see, that you are only able to select any of the provided file-types:

That was simple and quick. Thanks PrimeFaces ;)