diff --git a/voila-runtime-core/pom.xml b/voila-runtime-core/pom.xml
index 7794d896b2f060f22ff01713b6db24d50cd4af09..5d11bc616c381bbaf5be26cf3911c5edb4c11bb4 100644
--- a/voila-runtime-core/pom.xml
+++ b/voila-runtime-core/pom.xml
@@ -70,6 +70,10 @@
 					<groupId>commons-collections</groupId>
 					<artifactId>commons-collections</artifactId>
 				</exclusion>
+				<exclusion>
+					<groupId>commons-beanutils</groupId>
+    			<artifactId>commons-beanutils-core</artifactId>
+				</exclusion>
 			</exclusions>
 		</dependency>
 		<dependency>
@@ -96,32 +100,10 @@
 				</exclusion>
 			</exclusions>
 		</dependency>
-		<dependency>
-			<groupId>commons-beanutils</groupId>
-			<artifactId>commons-beanutils</artifactId>
-			<version>1.8.3</version>
-			<exclusions>
-				<exclusion>
-					<groupId>commons-logging</groupId>
-					<artifactId>commons-logging</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
 		<dependency>
 	    <groupId>javax.validation</groupId>
 	    <artifactId>validation-api</artifactId>
 	    <version>2.0.1.Final</version>
 		</dependency>
-		<dependency>
-			<groupId>org.apache.velocity</groupId>
-			<artifactId>velocity</artifactId>
-			<version>1.6.4</version>
-			<exclusions>
-				<exclusion>
-					<groupId>commons-collections</groupId>
-					<artifactId>commons-collections</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
 	</dependencies>
 </project>
\ No newline at end of file
diff --git a/voila-runtime-displaytag/pom.xml b/voila-runtime-displaytag/pom.xml
index 50fc544ff475000b63e4c84896fae72f5d200152..6ec8fa200e786d13f53ab388e9a8c11ca0c476e3 100644
--- a/voila-runtime-displaytag/pom.xml
+++ b/voila-runtime-displaytag/pom.xml
@@ -21,19 +21,31 @@
 			<version>${project.parent.version}</version>
 		</dependency>
 		<dependency>
-			<groupId>com.lowagie</groupId>
-			<artifactId>itext</artifactId>
-			<version>2.1.7</version>
+	    <groupId>com.itextpdf</groupId>
+	    <artifactId>itextpdf</artifactId>
+	    <version>5.5.13.3</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.poi</groupId>
 			<artifactId>poi</artifactId>
-			<version>3.6</version>
+			<version>5.2.2</version>
 		</dependency>
 		<dependency>
 			<groupId>commons-io</groupId>
 			<artifactId>commons-io</artifactId>
 			<version>1.4</version>
 		</dependency>
+		<dependency>
+	    <groupId>javax.servlet.jsp</groupId>
+	    <artifactId>javax.servlet.jsp-api</artifactId>
+	    <version>2.3.3</version>
+	    <scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+			<scope>provided</scope>
+		</dependency>
 	</dependencies>
 </project>
\ No newline at end of file
diff --git a/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/AbstractPdfExporter.java b/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/AbstractPdfExporter.java
index e99ab26115438a43fdc38946bc612b3c5fdbe6ca..91e9ccea0a06d785222c508758a233f6971d334b 100644
--- a/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/AbstractPdfExporter.java
+++ b/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/AbstractPdfExporter.java
@@ -31,20 +31,22 @@ import org.displaytag.model.RowIterator;
 import org.displaytag.model.TableModel;
 import org.displaytag.util.TagConstants;
 
-import com.lowagie.text.BadElementException;
-import com.lowagie.text.Document;
-import com.lowagie.text.DocumentException;
-import com.lowagie.text.Element;
-import com.lowagie.text.Font;
-import com.lowagie.text.FontFactory;
-import com.lowagie.text.HeaderFooter;
-import com.lowagie.text.PageSize;
-import com.lowagie.text.Paragraph;
-import com.lowagie.text.Phrase;
-import com.lowagie.text.Rectangle;
-import com.lowagie.text.pdf.PdfPCell;
-import com.lowagie.text.pdf.PdfPTable;
-import com.lowagie.text.pdf.PdfWriter;
+import com.itextpdf.text.BadElementException;
+import com.itextpdf.text.BaseColor;
+import com.itextpdf.text.Document;
+import com.itextpdf.text.DocumentException;
+import com.itextpdf.text.Element;
+import com.itextpdf.text.Font;
+import com.itextpdf.text.FontFactory;
+import com.itextpdf.text.PageSize;
+import com.itextpdf.text.Paragraph;
+import com.itextpdf.text.Phrase;
+import com.itextpdf.text.Rectangle;
+import com.itextpdf.text.pdf.ColumnText;
+import com.itextpdf.text.pdf.PdfContentByte;
+import com.itextpdf.text.pdf.PdfPCell;
+import com.itextpdf.text.pdf.PdfPTable;
+import com.itextpdf.text.pdf.PdfWriter;
 
 /**
  * Created by IntelliJ IDEA.
@@ -120,7 +122,7 @@ public abstract class AbstractPdfExporter extends AbstractTotalExporter {
         tablePDF.setWidthPercentage(100);
         tablePDF.setHeaderRows(1);
 
-        smallFont = FontFactory.getFont(FontFactory.HELVETICA, 7, Font.NORMAL, new Color(0, 0, 0));
+        smallFont = FontFactory.getFont(FontFactory.HELVETICA, 7, Font.NORMAL, new BaseColor(0, 0, 0));
         
         super.init(this.model);
     }
@@ -162,8 +164,9 @@ public abstract class AbstractPdfExporter extends AbstractTotalExporter {
             PdfWriter.getInstance(document, out);
 
             document.addCreationDate();
-
-            prepareHeaderFooter(document);
+            
+            PdfWriter writer = PdfWriter.getInstance(document, out);
+            prepareHeaderFooter(writer, document);
 
             document.open();
 
@@ -273,7 +276,7 @@ public abstract class AbstractPdfExporter extends AbstractTotalExporter {
 			if (value == null || value == "") {
 		        cell.setBorder(Rectangle.NO_BORDER);
 			} else {
-				cell.setBackgroundColor(Color.LIGHT_GRAY);
+				cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
 			}
 		}
 		Object al = hc.getHtmlAttributes().get(TagConstants.ATTRIBUTE_ALIGN);
@@ -317,13 +320,13 @@ public abstract class AbstractPdfExporter extends AbstractTotalExporter {
         document.add(new Phrase(""));
     }
 
-    protected void prepareHeaderFooter(Document document) {
+    protected void prepareHeaderFooter(PdfWriter writer, Document document) {
         SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
         String footerText = sdf.format(new Date()) + "                         pagina: ";
-        HeaderFooter footer = new HeaderFooter(new Phrase(footerText, smallFont), true);
-        footer.setBorder(Rectangle.NO_BORDER);
-        footer.setAlignment(Element.ALIGN_CENTER);
-        document.setFooter(footer);
+        PdfContentByte cb = writer.getDirectContent();
+        Phrase footer = new Phrase(footerText, smallFont);
+        ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, footer, 
+        		(document.right() - document.left()) / 2 + document.leftMargin(), document.bottom() - 10, 0);
     }
 
     /**
diff --git a/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/BasicPdfExporter.java b/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/BasicPdfExporter.java
index c633721d386a770a1efe203717b7246259e9da7f..e188706ab00ee621a596c36e8204adcef812d129 100644
--- a/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/BasicPdfExporter.java
+++ b/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/pdfexporter/BasicPdfExporter.java
@@ -2,11 +2,11 @@ package it.mice.voila.runtime.displaytag.pdfexporter;
 
 import it.mice.voila.runtime.displaytag.DisplayTagUtils;
 
-import com.lowagie.text.Document;
-import com.lowagie.text.DocumentException;
-import com.lowagie.text.Element;
-import com.lowagie.text.Paragraph;
-import com.lowagie.text.Phrase;
+import com.itextpdf.text.Document;
+import com.itextpdf.text.DocumentException;
+import com.itextpdf.text.Element;
+import com.itextpdf.text.Paragraph;
+import com.itextpdf.text.Phrase;
 
 public class BasicPdfExporter extends AbstractPdfExporter {
 
diff --git a/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/poiexporter/JfExcelHssfView.java b/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/poiexporter/JfExcelHssfView.java
index 04fcbb32794071eb320fa07c740bf17b65b04e0f..51f073be1ce9c79e77e57ae1ece1dd271dc9b0c3 100644
--- a/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/poiexporter/JfExcelHssfView.java
+++ b/voila-runtime-displaytag/src/main/java/it/mice/voila/runtime/displaytag/poiexporter/JfExcelHssfView.java
@@ -40,8 +40,11 @@ import org.apache.poi.hssf.usermodel.HSSFRichTextString;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.hssf.util.CellReference;
+import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.poi.ss.usermodel.BorderStyle;
+import org.apache.poi.ss.usermodel.FillPatternType;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
 import org.apache.poi.ss.usermodel.Name;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.displaytag.Messages;
@@ -112,93 +115,93 @@ public class JfExcelHssfView extends AbstractTotalExporter {
 	protected void initStyles(HSSFWorkbook wb) {
 
 		titleFont = wb.createFont();
-		titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+		titleFont.setBold(true);
 		titleFont.setFontHeightInPoints((short) 12);
-		titleFont.setColor(HSSFColor.BLUE.index);
+		titleFont.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
 
 		headerFont = wb.createFont();
-		headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+		headerFont.setBold(true);
 		headerFont.setFontHeightInPoints((short) 10);
-		headerFont.setColor(HSSFColor.BLUE.index);
+		headerFont.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
 
 		dataFont = wb.createFont();
-		dataFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
+		dataFont.setBold(true);
 		dataFont.setFontHeightInPoints((short) 9);
-		dataFont.setColor(HSSFColor.BLACK.index);
+		dataFont.setColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
 
 		titleStyle = wb.createCellStyle();
 		// titleStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
 		// titleStyle.setFillPattern(HSSFCellStyle.FINE_DOTS);
-		titleStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
+		titleStyle.setAlignment(HorizontalAlignment.LEFT);
 		titleStyle.setFont(titleFont);
 
 		headerStyle = wb.createCellStyle();
 		// headerStyle.setFillBackgroundColor(HSSFColor.YELLOW.index);
 		// headerStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-		headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
-		headerStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
-		headerStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
-		headerStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
-		headerStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
+		headerStyle.setAlignment(HorizontalAlignment.CENTER);
+		headerStyle.setBorderTop(BorderStyle.THIN);
+		headerStyle.setBorderBottom(BorderStyle.THIN);
+		headerStyle.setBorderLeft(BorderStyle.THIN);
+		headerStyle.setBorderRight(BorderStyle.THIN);
 		headerStyle.setWrapText(true);
 		headerStyle.setFont(headerFont);
 
 		totalStyle = wb.createCellStyle();
-		totalStyle.setFillBackgroundColor(HSSFColor.YELLOW.index);
-		totalStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
+		totalStyle.setFillBackgroundColor(HSSFColor.HSSFColorPredefined.YELLOW.getIndex());
+		totalStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
 
 		cellStyle = createBorderedNoFillCellStyle(wb);
 		cellStyle.setWrapText(true);
 
 		cellStyleForDate = createBorderedNoFillCellStyle(wb);
-		cellStyleForDate.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
+		cellStyleForDate.setAlignment(HorizontalAlignment.RIGHT);
 		cellStyleForDate.setDataFormat(HSSFDataFormat
 				.getBuiltinFormat("m/d/yy"));
 
 		cellStyleForDateTime = createBorderedNoFillCellStyle(wb);
-		cellStyleForDateTime.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
+		cellStyleForDateTime.setAlignment(HorizontalAlignment.RIGHT);
 		cellStyleForDateTime.setDataFormat(HSSFDataFormat
 				.getBuiltinFormat("m/d/yy h:mm"));
 
 		cellStyleForCurrency1digit = createBorderedNoFillCellStyle(wb);
-		cellStyleForCurrency1digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
+		cellStyleForCurrency1digit.setAlignment(HorizontalAlignment.RIGHT);
 		cellStyleForCurrency1digit.setDataFormat(HSSFDataFormat
 				.getBuiltinFormat("#,##0.00"));
 
 		cellStyleForCurrency2digit = createBorderedNoFillCellStyle(wb);
-		cellStyleForCurrency2digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
+		cellStyleForCurrency2digit.setAlignment(HorizontalAlignment.RIGHT);
 		cellStyleForCurrency2digit.setDataFormat(HSSFDataFormat
 				.getBuiltinFormat("#,##0.00"));
 
 		cellStyleForCurrency3digit = createBorderedNoFillCellStyle(wb);
-		cellStyleForCurrency3digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
+		cellStyleForCurrency3digit.setAlignment(HorizontalAlignment.RIGHT);
 		cellStyleForCurrency3digit.setDataFormat(wb.createDataFormat().getFormat("#,##0.000"));
 
 		cellStyleForCurrency4digit = createBorderedNoFillCellStyle(wb);
-		cellStyleForCurrency4digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
+		cellStyleForCurrency4digit.setAlignment(HorizontalAlignment.RIGHT);
 		cellStyleForCurrency4digit.setDataFormat(wb.createDataFormat().getFormat("#,##0.0000"));
 
 		cellStyleForCurrency5digit = createBorderedNoFillCellStyle(wb);
-		cellStyleForCurrency5digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
+		cellStyleForCurrency5digit.setAlignment(HorizontalAlignment.RIGHT);
 		cellStyleForCurrency5digit.setDataFormat(wb.createDataFormat().getFormat("#,##0.00000"));
 
 		cellStyleForPercentage = createBorderedNoFillCellStyle(wb);
-		cellStyleForPercentage.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
+		cellStyleForPercentage.setAlignment(HorizontalAlignment.RIGHT);
 		cellStyleForPercentage.setDataFormat(HSSFDataFormat
 				.getBuiltinFormat("0%"));
 
 		cellStyleForPercentage1digit = createBorderedNoFillCellStyle(wb);
-		cellStyleForPercentage1digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
+		cellStyleForPercentage1digit.setAlignment(HorizontalAlignment.RIGHT);
 		cellStyleForPercentage1digit.setDataFormat(HSSFDataFormat
 				.getBuiltinFormat("0.0%"));
 
 		cellStyleForPercentage2digit = createBorderedNoFillCellStyle(wb);
-		cellStyleForPercentage2digit.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
+		cellStyleForPercentage2digit.setAlignment(HorizontalAlignment.RIGHT);
 		cellStyleForPercentage2digit.setDataFormat(HSSFDataFormat
 				.getBuiltinFormat("0.00%"));
 
 		cellStyleForNumber = createBorderedNoFillCellStyle(wb);
-		cellStyleForNumber.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
+		cellStyleForNumber.setAlignment(HorizontalAlignment.RIGHT);
 		cellStyleForNumber.setDataFormat(HSSFDataFormat.getBuiltinFormat("0"));
 
 		initialized = true;
@@ -206,11 +209,11 @@ public class JfExcelHssfView extends AbstractTotalExporter {
 
 	protected HSSFCellStyle createBorderedNoFillCellStyle(HSSFWorkbook wb) {
 		HSSFCellStyle cs = wb.createCellStyle();
-		cs.setFillPattern(HSSFCellStyle.NO_FILL);
-		cs.setBorderTop(HSSFCellStyle.BORDER_THIN);
-		cs.setBorderBottom(HSSFCellStyle.BORDER_THIN);
-		cs.setBorderLeft(HSSFCellStyle.BORDER_THIN);
-		cs.setBorderRight(HSSFCellStyle.BORDER_THIN);
+		cs.setFillPattern(FillPatternType.NO_FILL);
+		cs.setBorderTop(BorderStyle.THIN);
+		cs.setBorderBottom(BorderStyle.THIN);
+		cs.setBorderLeft(BorderStyle.THIN);
+		cs.setBorderRight(BorderStyle.THIN);
 		// cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
 		cs.setFont(dataFont);
 
diff --git a/voila-runtime-hibernate-spatial/pom.xml b/voila-runtime-hibernate-spatial/pom.xml
index 87c993618139c40eb4d76c4bec06c553988e674f..9daa22ff56e7c9f2bb9136a5958d4b4514b6aece 100644
--- a/voila-runtime-hibernate-spatial/pom.xml
+++ b/voila-runtime-hibernate-spatial/pom.xml
@@ -32,7 +32,7 @@
 		<dependency>
 			<groupId>com.google.maps</groupId>
 			<artifactId>google-maps-services</artifactId>
-			<version>0.18.0</version>
+			<version>2.2.0</version>
 		</dependency>
 		<dependency>
 			<groupId>it.micegroup.voila.runtime</groupId>
diff --git a/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomBagType.java b/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomBagType.java
index c087c147e32e79c3c19f436581d8d0982a7d5cf0..ba90a363491ca68d4e885ab24264b7cf011b87e3 100644
--- a/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomBagType.java
+++ b/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomBagType.java
@@ -11,6 +11,7 @@ import org.hibernate.collection.spi.PersistentCollection;
 import org.hibernate.engine.spi.SessionImplementor;
 import org.hibernate.engine.spi.SharedSessionContractImplementor;
 import org.hibernate.persister.collection.CollectionPersister;
+import org.hibernate.collection.internal.PersistentList;
 import org.hibernate.usertype.UserCollectionType;
 
 /**
@@ -71,7 +72,8 @@ public class CustomBagType implements UserCollectionType {
 
 	@Override
 	public PersistentCollection wrap(SharedSessionContractImplementor session, Object collection) {
-		return new CustomPersistentBag(session, (CollectionPersister) collection);
+		PersistentList persistentList = new PersistentList(session, (List) collection);
+		return new CustomPersistentBag(session, persistentList);
 	}
 
 	@Override
diff --git a/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomPersistentBag.java b/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomPersistentBag.java
index b3197ad9c0a268565bdcb06eb65c9265aa80fe53..14cb872f5fe0ce2fd6c0c0503939584173028aa2 100644
--- a/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomPersistentBag.java
+++ b/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/bag/CustomPersistentBag.java
@@ -15,6 +15,7 @@ import org.apache.commons.logging.LogFactory;
 import org.hibernate.HibernateException;
 import org.hibernate.LazyInitializationException;
 import org.hibernate.collection.internal.PersistentBag;
+import org.hibernate.collection.internal.PersistentList;
 import org.hibernate.engine.spi.SessionImplementor;
 import org.hibernate.engine.spi.SharedSessionContractImplementor;
 import org.hibernate.persister.collection.CollectionPersister;
@@ -45,7 +46,11 @@ public class CustomPersistentBag extends PersistentBag {
     public CustomPersistentBag() {
     }
 
-    public int size() {
+    public CustomPersistentBag(SharedSessionContractImplementor session, PersistentList collection) {
+    	 super(session, collection);
+	}
+
+	public int size() {
         try {
             return super.size();
         } catch (LazyInitializationException e) {
diff --git a/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/listeners/SaveOrUpdateEventListener.java b/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/listeners/SaveOrUpdateEventListener.java
index 523d99da1316205e5896bade0d2d189aed5e7517..530dbb29eb3ce223faab8fd976ab86d0d5b52f01 100644
--- a/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/listeners/SaveOrUpdateEventListener.java
+++ b/voila-runtime-hibernate/src/main/java/it/mice/voila/runtime/hibernate/listeners/SaveOrUpdateEventListener.java
@@ -3,6 +3,8 @@ package it.mice.voila.runtime.hibernate.listeners;
 import it.mice.voila.runtime.entity.Entity;
 import it.mice.voila.runtime.entity.TrackAttributeAwareEntity;
 
+import javax.persistence.PreUpdate;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.hibernate.HibernateException;
@@ -11,117 +13,115 @@ import org.hibernate.engine.spi.EntityEntry;
 import org.hibernate.engine.spi.EntityKey;
 import org.hibernate.engine.spi.SessionImplementor;
 import org.hibernate.event.internal.DefaultSaveOrUpdateEventListener;
+import org.hibernate.event.internal.EntityState;
 import org.hibernate.event.spi.EventSource;
 import org.hibernate.event.spi.SaveOrUpdateEvent;
 import org.hibernate.persister.entity.EntityPersister;
 
 /**
- * Created by IntelliJ IDEA.
- * User: zzy9v4
- * Date: 22-feb-2007
- * Time: 14.02.38
- * To change this template use File | Settings | File Templates.
+ * Created by IntelliJ IDEA. User: zzy9v4 Date: 22-feb-2007 Time: 14.02.38 To
+ * change this template use File | Settings | File Templates.
  */
 public class SaveOrUpdateEventListener extends DefaultSaveOrUpdateEventListener {
-    private static final Log log = LogFactory.getLog(SaveOrUpdateEventListener.class);
+	private static final Log log = LogFactory.getLog(SaveOrUpdateEventListener.class);
+
+	/**
+	 * Determine whether the entity is persistent, detached, or transient
+	 *
+	 * @param entity     The entity to check
+	 * @param entityName The name of the entity
+	 * @param entry      The entity's entry in the persistence context
+	 * @param source     The originating session.
+	 * @return The state.
+	 */
+	protected EntityState getEntityState(Object entity, String entityName, EntityEntry entry, // pass this as an
+																								// argument only to
+																								// avoid double looking
+			SessionImplementor source) {
+
+		if (entry != null) { // the object is persistent
+			return EntityState.getEntityState(entity, entityName, entry, source, getAssumedUnsavedForEntity(entity));
+		} else { // The object is not in the session cache !!!
+			return getInternalEntityState(entityName, entity, source);
+		}
+	}
 
-    /**
-     * Determine whether the entity is persistent, detached, or transient
-     *
-     * @param entity     The entity to check
-     * @param entityName The name of the entity
-     * @param entry      The entity's entry in the persistence context
-     * @param source     The originating session.
-     * @return The state.
-     */
-//    protected int getEntityState(
-//            Object entity,
-//            String entityName,
-//            EntityEntry entry, //pass this as an argument only to avoid double looking
-//            SessionImplementor source) {
-//
-//        if (entry != null) { // the object is persistent
-//            return super.getEntityState(entity, entityName, entry, source);
-//        } else { //The object is not in the session cache !!!
-//            return getInternalEntityState(entityName, entity, source);
-//        }
-//    }
+	private EntityState getInternalEntityState(String entityName, Object entity, SessionImplementor source) {
+		// the object is transient or detached
+		// the entity is not associated with the session, so
+		// try interceptor and unsaved-value
+		if (entity instanceof Entity) {
+			Entity wrappedEntity = (Entity) entity;
+			if (wrappedEntity.isNewEntity()) {
+				return EntityState.TRANSIENT;
+			} else {
+				return EntityState.DETACHED;
+			}
+		}
+		Boolean assumedUnsaved = getAssumedUnsavedForEntity(entity);
+		EntityState entityState = EntityState.getEntityState(entity, entityName, null, source, assumedUnsaved);
 
-//    private int getInternalEntityState(String entityName, Object entity, SessionImplementor source) {
-//        //the object is transient or detached
-//        //the entity is not associated with the session, so
-//        //try interceptor and unsaved-value
-//    	if (entity instanceof Entity) {
-//    		Entity wrappedEntity = (Entity)entity;
-//    		if (wrappedEntity.isNewEntity()) {
-//    			return TRANSIENT;
-//    		} else {
-//    			return DETACHED;
-//    		}
-//    	}
-//    	
-//        if (ForeignKeys.isTransient(entityName, entity, getAssumedUnsavedForEntity(entity), source)) {
-//            if (log.isTraceEnabled()) {
-//                log.trace(
-//                        "transient instance of: " +
-//                                getLoggableName(entityName, entity)
-//                );
-//            }
-//            return TRANSIENT;
-//        } else {
-//            if (log.isTraceEnabled()) {
-//                log.trace(
-//                        "detached instance of: " +
-//                                getLoggableName(entityName, entity)
-//                );
-//            }
-//            return DETACHED;
-//        }
-//    }
+		if (entityState == EntityState.TRANSIENT) {
+			if (log.isTraceEnabled()) {
+				log.trace("transient instance of: " + getLoggableName(entityName, entity));
+			}
+		} else {
+			if (log.isTraceEnabled()) {
+				log.trace("detached instance of: " + getLoggableName(entityName, entity));
+			}
+		}
+		return entityState;
+	}
 
-    private Boolean getAssumedUnsavedForEntity(Object entity) {
-        if (entity instanceof Entity) {
-            if (((Entity) entity).isNewEntity()) {
-                return Boolean.TRUE;
-            } else {
-                return Boolean.FALSE;
-            }
-        }
-        return null;
-    }
+	private Boolean getAssumedUnsavedForEntity(Object entity) {
+		if (entity instanceof Entity) {
+			if (((Entity) entity).isNewEntity()) {
+				return Boolean.TRUE;
+			} else {
+				return Boolean.FALSE;
+			}
+		}
+		return null;
+	}
 
+	@Override
 	public void onSaveOrUpdate(SaveOrUpdateEvent event) {
-        Entity entity = (Entity)event.getObject();
-        if (entity.isNewEntity()) {
-            if (entity instanceof TrackAttributeAwareEntity) {
-                ((TrackAttributeAwareEntity) entity).trackInsertAttribute();
-            }
-        }
-        if (entity.isNewEntity() || entity.isChangedEntity()) {
-            if (entity instanceof TrackAttributeAwareEntity) {
-                ((TrackAttributeAwareEntity) entity).trackUpdateAttribute();
-            }
-        }
+		Entity entity = (Entity) event.getObject();
+		if (entity.isNewEntity()) {
+			if (entity instanceof TrackAttributeAwareEntity) {
+				((TrackAttributeAwareEntity) entity).trackInsertAttribute();
+			}
+		}
+		if (entity.isNewEntity() || entity.isChangedEntity()) {
+			if (entity instanceof TrackAttributeAwareEntity) {
+				((TrackAttributeAwareEntity) entity).trackUpdateAttribute();
+			}
+		}
 
 		super.onSaveOrUpdate(event);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.hibernate.event.def.DefaultSaveOrUpdateEventListener#performUpdate(org.hibernate.event.SaveOrUpdateEvent, java.lang.Object, org.hibernate.persister.entity.EntityPersister)
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.hibernate.event.def.DefaultSaveOrUpdateEventListener#performUpdate(org.
+	 * hibernate.event.SaveOrUpdateEvent, java.lang.Object,
+	 * org.hibernate.persister.entity.EntityPersister)
 	 */
 	@Override
-	protected void performUpdate(SaveOrUpdateEvent event, Object entity,
-			EntityPersister persister) throws HibernateException {
-		
+	protected void performUpdate(SaveOrUpdateEvent event, Object entity, EntityPersister persister)
+			throws HibernateException {
+
 		final EventSource source = event.getSession();
-		EntityKey key = new EntityKey( event.getRequestedId(), persister);
+		EntityKey key = new EntityKey(event.getRequestedId(), persister);
 		if (source.getPersistenceContext().getEntity(key) != null) {
 			source.getPersistenceContext().removeEntity(key);
 		}
 
 		super.performUpdate(event, entity, persister);
 	}
-	
+
 	protected String getLoggableName(String entityName, Object entity) {
 		return entityName == null ? entity.getClass().getName() : entityName;
 	}
diff --git a/voila-runtime-jasper4/pom.xml b/voila-runtime-jasper4/pom.xml
index 791a4737c03351552521d137fff103253169fd06..8837649a3e4c6eb42d48e2dc23bcc772314bea4f 100644
--- a/voila-runtime-jasper4/pom.xml
+++ b/voila-runtime-jasper4/pom.xml
@@ -14,38 +14,29 @@
 		<dependency>
 			<groupId>net.sf.jasperreports</groupId>
 			<artifactId>jasperreports</artifactId>
-			<version>4.1.2</version>
+			<version>6.21.3</version>
 			<exclusions>
 				<!-- Exclude Commons Logging in favor of SLF4j -->
 				<exclusion>
 					<groupId>xml-apis</groupId>
-					<artifactId>xml-apis</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>org.apache.poi</groupId>
-					<artifactId>poi</artifactId>
+					<artifactId>xml-apis-ext</artifactId>
 				</exclusion>
 			</exclusions>
 		</dependency>
-		<dependency>
-			<groupId>org.apache.poi</groupId>
-			<artifactId>poi</artifactId>
-			<version>3.9</version>
-		</dependency>
 		<dependency>
 			<groupId>net.sf.jasperreports</groupId>
 			<artifactId>jasperreports-fonts</artifactId>
-			<version>4.0.0</version>
+			<version>6.21.3</version>
 		</dependency>
 		<dependency>
 			<groupId>net.sf.jasperreports</groupId>
 			<artifactId>jasperreports-chart-themes</artifactId>
-			<version>4.0.2</version>
+			<version>6.21.3</version>
 		</dependency>
 		<dependency>
 			<groupId>org.jasypt</groupId>
 			<artifactId>jasypt</artifactId>
-			<version>1.7.1</version>
+			<version>1.9.3</version>
 		</dependency>
 		<dependency>
 			<groupId>fonts</groupId>
diff --git a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperReportDefinition.java b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperReportDefinition.java
index f5658a92a90f5e1014ece099c40966dbe974a0a1..29dccdc4ce86a867eb4b3a2f7a2b3784b6a51c72 100644
--- a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperReportDefinition.java
+++ b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperReportDefinition.java
@@ -35,7 +35,7 @@ import net.sf.jasperreports.engine.JasperPrint;
 import net.sf.jasperreports.engine.JasperReport;
 import net.sf.jasperreports.engine.design.JasperDesign;
 import net.sf.jasperreports.engine.export.JRCsvExporter;
-import net.sf.jasperreports.engine.export.JRHtmlExporter;
+import net.sf.jasperreports.engine.export.HtmlExporter;
 import net.sf.jasperreports.engine.export.JRPdfExporter;
 import net.sf.jasperreports.engine.export.JRPdfExporterParameter;
 import net.sf.jasperreports.engine.export.JRRtfExporter;
@@ -158,7 +158,7 @@ public class JasperReportDefinition extends ApplicationObjectSupport {
 	public JasperReportDefinition() {
 		Map<String, Class<? extends JRExporter>> mappings = new HashMap<String, Class<? extends JRExporter>>(5);
 		mappings.put("csv", JRCsvExporter.class);
-		mappings.put("html", JRHtmlExporter.class);
+		mappings.put("html", HtmlExporter.class);
 		mappings.put("pdf", JRPdfExporter.class);
 		mappings.put("xls", JRXlsExporter.class);
 		mappings.put("rtf", JRRtfExporter.class);
diff --git a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperUtils.java b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperUtils.java
index 569d5575967860ba24a3de5643c3a83d268f1ddd..897b4c0fec1380306cc626adf00c4eca57fd870e 100644
--- a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperUtils.java
+++ b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/JasperUtils.java
@@ -12,9 +12,11 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
+import net.sf.jasperreports.engine.DefaultJasperReportsContext;
 import net.sf.jasperreports.engine.JRDataSource;
 import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
-import net.sf.jasperreports.engine.util.JRProperties;
+import net.sf.jasperreports.engine.JRPropertiesUtil;
+import net.sf.jasperreports.engine.JasperReportsContext;
 
 /**
  *
@@ -41,9 +43,10 @@ public class JasperUtils {
 		Map<String, Object> parameterMap = new HashMap<String, Object>();
 		parameterMap.put("dataSource", JasperUtils.buildDataSource(dataSource));
 		parameterMap.put("format", format);
-		JRProperties.setProperty("net.sf.jasperreports.default.pdf.encoding", "Identity-H");
-		JRProperties.setProperty("net.sf.jasperreports.default.pdf.font.name", "ARIALUNI.TTF");
-		
+		JasperReportsContext jasperReportsContext = DefaultJasperReportsContext.getInstance();
+		JRPropertiesUtil jrPropertiesUtil = JRPropertiesUtil.getInstance(jasperReportsContext);
+		jrPropertiesUtil.setProperty("net.sf.jasperreports.default.pdf.encoding", "Identity-H");    
+		jrPropertiesUtil.setProperty("net.sf.jasperreports.default.pdf.font.name", "ARIALUNI.TTF"); 	
 		return parameterMap;
 	}
 	
diff --git a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/utils/JasperReportsUtils.java b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/utils/JasperReportsUtils.java
index 6e822ebf7c1bb38a447a18ce22b63dabf450fedc..60e2593b9f058ede2ccc29d13e90e51792702e87 100644
--- a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/utils/JasperReportsUtils.java
+++ b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/utils/JasperReportsUtils.java
@@ -15,7 +15,7 @@ import net.sf.jasperreports.engine.JasperReport;
 import net.sf.jasperreports.engine.data.JRBeanArrayDataSource;
 import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
 import net.sf.jasperreports.engine.export.JRCsvExporter;
-import net.sf.jasperreports.engine.export.JRHtmlExporter;
+import net.sf.jasperreports.engine.export.HtmlExporter;
 import net.sf.jasperreports.engine.export.JRPdfExporter;
 import net.sf.jasperreports.engine.export.JRXlsExporter;
 
@@ -152,7 +152,7 @@ public abstract class JasperReportsUtils {
 			throws JRException {
 
 		JasperPrint print = JasperFillManager.fillReport(report, parameters, convertReportData(reportData));
-		render(new JRHtmlExporter(), print, writer);
+		render(new HtmlExporter(), print, writer);
 	}
 
 	/**
@@ -172,7 +172,7 @@ public abstract class JasperReportsUtils {
 			Map exporterParameters) throws JRException {
 
 		JasperPrint print = JasperFillManager.fillReport(report, parameters, convertReportData(reportData));
-		JRHtmlExporter exporter = new JRHtmlExporter();
+		HtmlExporter exporter = new HtmlExporter();
 		exporter.setParameters(exporterParameters);
 		render(exporter, print, writer);
 	}
diff --git a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/view/helpers/JasperReportsHtmlViewJasper.java b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/view/helpers/JasperReportsHtmlViewJasper.java
index 41018c2eb9451739fa8cb7a41c3b9968f101f4ff..23345353a320c6375bec4c0190059ea9cd86784e 100644
--- a/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/view/helpers/JasperReportsHtmlViewJasper.java
+++ b/voila-runtime-jasper4/src/main/java/it/mice/voila/runtime/jasper/view/helpers/JasperReportsHtmlViewJasper.java
@@ -1,7 +1,7 @@
 package it.mice.voila.runtime.jasper.view.helpers;
 
 import net.sf.jasperreports.engine.JRExporter;
-import net.sf.jasperreports.engine.export.JRHtmlExporter;
+import net.sf.jasperreports.engine.export.HtmlExporter;
 
 /**
  * Implementation of <code>AbstractJasperReportsSingleFormatView</code>
@@ -19,7 +19,7 @@ public class JasperReportsHtmlViewJasper extends AbstractJasperReportsSingleForm
 
 	@Override
 	protected JRExporter createExporter() {
-		return new JRHtmlExporter();
+		return new HtmlExporter();
 	}
 
 	@Override
diff --git a/voila-runtime-oawtemplate/pom.xml b/voila-runtime-oawtemplate/pom.xml
index 825d582ab615428b533e9d3aaefb96c8cb2ff8c5..c48d7f0acb3a1dce04abf60e175e3a608a796000 100644
--- a/voila-runtime-oawtemplate/pom.xml
+++ b/voila-runtime-oawtemplate/pom.xml
@@ -71,13 +71,6 @@
             <version>2.6.0.v20100914-1218</version>
             <type>jar</type>
         </dependency>
-
-        <dependency>
-            <groupId>commons-beanutils</groupId>
-            <artifactId>commons-beanutils</artifactId>
-            <version>1.6.1</version>
-            <type>jar</type>
-        </dependency>
         <dependency>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
diff --git a/voila-runtime-root/pom.xml b/voila-runtime-root/pom.xml
index 652bcbecf89ee54c75c5ad378a6007dfae6626e7..80f8b1930f57634f2b869bb414dc9bf331f6fb51 100644
--- a/voila-runtime-root/pom.xml
+++ b/voila-runtime-root/pom.xml
@@ -316,7 +316,7 @@
 		<dependency>
 			<groupId>commons-beanutils</groupId>
 			<artifactId>commons-beanutils</artifactId>
-			<version>1.8.3</version>
+			<version>1.9.4</version>
 		</dependency>
 		<dependency>
 			<groupId>commons-lang</groupId>
@@ -345,20 +345,15 @@
 			<version>3.2.2</version>
 		</dependency>
 		<dependency>
-			<groupId>org.apache.velocity</groupId>
-			<artifactId>velocity</artifactId>
-			<version>1.6.4</version>
+	    <groupId>org.apache.velocity</groupId>
+	    <artifactId>velocity-engine-core</artifactId>
+	    <version>2.3</version>
 		</dependency>
 		<dependency>
 			<groupId>velocity-tools</groupId>
 			<artifactId>velocity-tools-generic</artifactId>
 			<version>1.2</version>
 		</dependency>
-		<dependency>
-			<groupId>c3p0</groupId>
-			<artifactId>c3p0</artifactId>
-			<version>0.9.1.2</version>
-		</dependency>
 		<dependency>
 			<groupId>org.aspectj</groupId>
 			<artifactId>aspectjweaver</artifactId>
diff --git a/voila-runtime-rtftemplate/pom.xml b/voila-runtime-rtftemplate/pom.xml
index ce8372fd1600d03f345950323d578d1079494b12..6c8681577e453c0d32bd867e8225f1aac44547f6 100644
--- a/voila-runtime-rtftemplate/pom.xml
+++ b/voila-runtime-rtftemplate/pom.xml
@@ -10,12 +10,6 @@
 	<name>Java framework Spring RTF Template runtime module</name>
 	<version>1.11-SNAPSHOT</version>
 	<dependencies>
-		<dependency>
-			<groupId>commons-beanutils</groupId>
-			<artifactId>commons-beanutils</artifactId>
-			<version>1.8.3</version>
-			<type>jar</type>
-		</dependency>
 		<dependency>
 			<groupId>commons-logging</groupId>
 			<artifactId>commons-logging</artifactId>
diff --git a/voila-runtime-security/pom.xml b/voila-runtime-security/pom.xml
index 0b79e8dbe1a45bf65f8e6420adc0eca12e7d777e..b41c0ee317e29a4c3ef56d901ad95ff4223422e3 100644
--- a/voila-runtime-security/pom.xml
+++ b/voila-runtime-security/pom.xml
@@ -68,12 +68,30 @@
 					<groupId>xerces</groupId>
 					<artifactId>xercesImpl</artifactId>
 				</exclusion>
+				<exclusion>
+					<groupId>org.owasp.antisamy</groupId>
+					<artifactId>antisamy</artifactId>
+				</exclusion>
 			</exclusions>
 		</dependency>
 		<dependency>
 	    <groupId>javax.xml.bind</groupId>
 	    <artifactId>jaxb-api</artifactId>
 	    <version>2.3.1</version>
-		</dependency>
+		</dependency><dependency>
+	    <groupId>org.owasp.antisamy</groupId>
+	    <artifactId>antisamy</artifactId>
+	    <version>1.7.5</version>
+	    <exclusions>
+	    	<exclusion>
+	    		<groupId>xml-apis</groupId>
+	    		<artifactId>xml-apis</artifactId>
+	    	</exclusion>
+	    	<exclusion>
+	    		<groupId>xml-apis</groupId>
+	    		<artifactId>xml-apis-ext</artifactId>
+	    	</exclusion>
+	    </exclusions>
+</dependency>
 	</dependencies>
 </project>
\ No newline at end of file
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFHandlerInterceptor.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFHandlerInterceptor.java
index ca5d9ed9ac5ea1c74342787762d658eae1d4143b..03448ccc0d506f933a2049c1820e1bd97f837132 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFHandlerInterceptor.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFHandlerInterceptor.java
@@ -14,6 +14,10 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+
+import org.springframework.security.web.csrf.CsrfTokenRepository;
+import org.springframework.stereotype.Component;
+import org.springframework.security.web.csrf.CsrfToken;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
 import org.springframework.web.util.HtmlUtils;
@@ -37,7 +41,8 @@ import it.mice.voila.runtime.util.UserMessage;
  * @see CSRFRequestDataValueProcessor
  *
  */
-public class CSRFHandlerInterceptor implements HandlerInterceptor{
+//@Component
+public class CSRFHandlerInterceptor implements HandlerInterceptor {
 
     /**
      * Default logger.
@@ -45,11 +50,21 @@ public class CSRFHandlerInterceptor implements HandlerInterceptor{
     private static final Log LOGGER = LogFactory.getLog(CSRFHandlerInterceptor.class); // NOSONAR
 
 	public static final String SECURITY_CSRF_EXCLUDED_PARAMS = "SECURITY_CSRF_EXCLUDED_PARAMS";
+	/**
+	 * The token parameter name
+	 */
+	static final String CSRF_PARAM_NAME = "_csrf";
 
     public static Collection<String> EXCLUDED_PARAMS = new ArrayList<String>();
     private Collection<String> excludedParameters = new ArrayList<String>();
     private boolean disabled = false;
     
+    private final CsrfTokenRepository csrfTokenRepository;
+
+    public CSRFHandlerInterceptor(CsrfTokenRepository csrfTokenRepository) {
+        this.csrfTokenRepository = csrfTokenRepository;
+    }
+    
 	public Collection<String> getExcludedParameters() {
 		return excludedParameters;
 	}
@@ -98,10 +113,11 @@ public class CSRFHandlerInterceptor implements HandlerInterceptor{
 			result = true;
 		} else {
 			// This is a POST request - need to check the CSRF token
-			String sessionToken = CSRFTokenManager.getTokenForSession(request.getSession());
-			String requestToken = CSRFTokenManager.getTokenFromRequest(request);
-			if (sessionToken.equals(requestToken)) {
-				result = checkParameters(request, response, handler);
+	        CsrfToken csrfToken = csrfTokenRepository.loadToken(request);
+	        String requestToken = request.getParameter(csrfToken.getParameterName());
+
+	        if (csrfToken.getToken().equals(requestToken)) {
+	            return checkParameters(request, response, handler);
 			} else {
 				throw new BusinessException(new UserMessage("error.security.unauthorizedRequest"));
 				//response.sendError(HttpServletResponse.SC_FORBIDDEN, "Bad or missing CSRF value");
@@ -138,7 +154,7 @@ public class CSRFHandlerInterceptor implements HandlerInterceptor{
 		while (e.hasMoreElements()) {
 			String paramName = e.nextElement();
 			String paramValue = request.getParameter(paramName);
-			if (!CSRFTokenManager.CSRF_PARAM_NAME.equals(paramName) && !isExcludedParameter(paramName, params)) { //FIXME
+			if (!CSRF_PARAM_NAME.equals(paramName) && !isExcludedParameter(paramName, params)) { //FIXME
 				FormField ff = ssb.getFormFields().get(paramName);
 				if (ff == null) {
 					LOGGER.warn("POST request field " + paramName + " not allowed.");
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFRequestDataValueProcessor.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFRequestDataValueProcessor.java
index efa902c4152397caee79f6e5a9b6428d5843cae5..48feab471f2deaa8357d41808bbac3e6857d9742 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFRequestDataValueProcessor.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFRequestDataValueProcessor.java
@@ -10,6 +10,9 @@ import javax.servlet.http.HttpServletRequest;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.web.csrf.CsrfToken;
+import org.springframework.security.web.csrf.CsrfTokenRepository;
 import org.springframework.web.servlet.support.RequestDataValueProcessor;
 
 /**
@@ -29,7 +32,13 @@ public class CSRFRequestDataValueProcessor implements RequestDataValueProcessor
      * Default logger.
      */
     private static final Log LOGGER = LogFactory.getLog(CSRFRequestDataValueProcessor.class); // NOSONAR
-
+    
+    private final CsrfTokenRepository csrfTokenRepository;
+    
+    public CSRFRequestDataValueProcessor(CsrfTokenRepository csrfTokenRepository) {
+        this.csrfTokenRepository = csrfTokenRepository;
+    }
+    
 	public String processAction(HttpServletRequest request, String action) {
 		LOGGER.debug("processAction: " + action);
 		return action;
@@ -46,7 +55,16 @@ public class CSRFRequestDataValueProcessor implements RequestDataValueProcessor
 
 	public Map<String, String> getExtraHiddenFields(HttpServletRequest request) {
 		Map<String, String> hiddenFields = new HashMap<String, String>();
-		hiddenFields.put(CSRFTokenManager.CSRF_PARAM_NAME, CSRFTokenManager.getTokenForSession(request.getSession()));
+		// Carica il token CSRF
+        CsrfToken csrfToken = csrfTokenRepository.loadToken(request);
+        if (csrfToken == null) {
+            csrfToken = csrfTokenRepository.generateToken(request);
+            csrfTokenRepository.saveToken(csrfToken, request, null);
+        }
+
+        // Aggiungi il token CSRF ai campi nascosti
+        hiddenFields.put(csrfToken.getParameterName(), csrfToken.getToken());
+//		hiddenFields.put(CSRFTokenManager.CSRF_PARAM_NAME, CSRFTokenManager.getTokenForSession(request.getSession()));
 		return hiddenFields;
 	}
 
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFTokenManager.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFTokenManager.java
index 0872cc8d63e91c6a5233249ffb7eafe3a8a1be65..f8030d298aec3ef46bf5401dabc1c835fc33ee25 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFTokenManager.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/csrf/CSRFTokenManager.java
@@ -5,6 +5,9 @@ import java.util.UUID;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.web.csrf.CsrfTokenRepository;
+
 /**
  * A manager for the CSRF token for a given session. The {@link #getTokenForSession(HttpSession)} should used to
  * obtain the token value for the current session (and this should be the only way to obtain the token value).
@@ -16,14 +19,16 @@ final class CSRFTokenManager {
 	/**
 	 * The token parameter name
 	 */
-	static final String CSRF_PARAM_NAME = "CSRFToken";
+	static final String CSRF_PARAM_NAME = "_csrf";
 
 	/**
 	 * The location on the session which stores the token
 	 */
 	private final static String CSRF_TOKEN_FOR_SESSION_ATTR_NAME = CSRFTokenManager.class.getName() + ".tokenval";
+	
+//	private final CsrfTokenRepository tokenRepository;
 
-	static String getTokenForSession (HttpSession session) {
+	static String getTokenForSession(HttpSession session) {
 		String token = null;
 		// I cannot allow more than one token on a session - in the case of two requests trying to
 		// init the token concurrently
@@ -46,5 +51,4 @@ final class CSRFTokenManager {
 		return request.getParameter(CSRF_PARAM_NAME);
 	}
 
-	private CSRFTokenManager() {};
 }
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/ButtonTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/ButtonTag.java
index 83a7330a25f18e1dc9ead1384b0bac477b288523..c329504b1ceb025cc9031e71687782af10882094 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/ButtonTag.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/ButtonTag.java
@@ -117,7 +117,7 @@ public class ButtonTag extends org.springframework.web.servlet.tags.form.ButtonT
 		if (getSkipValidation() == null) {
 			return isRenderAsLink();
 		}
-		return ExpressionEvaluationUtils.evaluateBoolean("skipValidation", getSkipValidation());
+		return ExpressionEvaluationUtils.evaluateBoolean("skipValidation", getSkipValidation(), this.pageContext);
 	}
 
 	private boolean isRenderAsLink() throws JspException {
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/CheckBoxTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/CheckBoxTag.java
index fd1fd7609def8252e51958b66aeaa6e151b85be1..e430a526c04aba93139ce84a2d8341ae04403b61 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/CheckBoxTag.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/CheckBoxTag.java
@@ -87,7 +87,7 @@ public class CheckBoxTag extends
 	}
 
 	private void protectField() throws JspException {
-		if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit())) {
+		if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit(), this.pageContext)) {
 			setReadonly(true);
 			setDisabled(true);
 			setTabindex("-1");
@@ -100,7 +100,7 @@ public class CheckBoxTag extends
 	@Override
 	public int doEndTag() throws JspException {
 		super.doEndTag();
-		if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo()) && !TagUtils.isBootstrapTheme()) {
+		if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo(), this.pageContext) && !TagUtils.isBootstrapTheme()) {
 			writeDojoScript(tagWriter);
 		}
 		return EVAL_PAGE;
@@ -113,7 +113,7 @@ public class CheckBoxTag extends
 		script.append("widgetType : 'dijit.form.CheckBox',");
 		script.append("widgetAttrs : {");
 
-		script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired()));
+		script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired(), this.pageContext));
 
 		script.append("}}));");
 		TagUtils.getCurrentForm(pageContext).addScript(script);
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/InputTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/InputTag.java
index 9c6850138e76f5a07f636c9e2d2d0b043680c97d..d0f42bc0962bcc94b0bbd2d1d1bd7d464fddb5b0 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/InputTag.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/InputTag.java
@@ -278,7 +278,7 @@ public class InputTag extends
 //		}
 		super.writeTagContent(tagWriter);
 		
-		if (ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo())) {
+		if (ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo(), this.pageContext)) {
 			return SKIP_BODY;
 		}
 		
@@ -357,7 +357,7 @@ public class InputTag extends
 	}
 
 	private void protectField() throws JspException {
-		if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit())) {
+		if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit(), this.pageContext)) {
 			setReadonly(true);
 			setTabindex("-1");
 		    if (getCssClass() == null || getCssClass().indexOf("protected") == -1) {
@@ -483,7 +483,7 @@ public class InputTag extends
 	}
 
 	private boolean isRequired() throws JspException {
-		return ExpressionEvaluationUtils.evaluateBoolean("required", getRequired());
+		return ExpressionEvaluationUtils.evaluateBoolean("required", getRequired(), this.pageContext);
 	}
 
 	private void computeOtherConstraints(StringBuffer script) throws JspException {
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MenuTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MenuTag.java
index 46526112e1ba07a4a8be7e37e8872fb9e6180374..aec738372509da08447fa060216c657d2d195096 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MenuTag.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MenuTag.java
@@ -476,7 +476,7 @@ public class MenuTag extends AbstractFormTag {
                 }
                 tagWriter.appendValue(caption);
                 tagWriter.endTag();
-                if (menuItemDefinition.getMenuToShow() != null || ExpressionEvaluationUtils.evaluateBoolean("renderLastBreadcrumbSymbol", getRenderLastBreadcrumbSymbol())) {
+                if (menuItemDefinition.getMenuToShow() != null || ExpressionEvaluationUtils.evaluateBoolean("renderLastBreadcrumbSymbol", getRenderLastBreadcrumbSymbol(), this.pageContext)) {
                 	TagUtils.safeWrite(pageContext, "&nbsp;&gt;&nbsp;");
                 }
                 if (menuItemDefinition.getMenuToShow() != null) {
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MessageAlertTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MessageAlertTag.java
index 0918f03198458fdb39c539d06d449efce5970af2..fd469980d51b5ff30a9521ca5fcd8e69c31a7dc0 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MessageAlertTag.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/MessageAlertTag.java
@@ -96,7 +96,7 @@ public class MessageAlertTag extends AbstractFormTag {
 			messageList.addAll(storedList);
 		}
 		
-		if (ExpressionEvaluationUtils.evaluateBoolean("includeValidationMessage", getIncludeValidationMessage())) {
+		if (ExpressionEvaluationUtils.evaluateBoolean("includeValidationMessage", getIncludeValidationMessage(), this.pageContext)) {
 			messageList.addUserMessages(collectValidationResult());
 		} else if ((getGenericValidationMessageKey()!=null) && !collectValidationResult().isEmpty()) {
 			messageList.add(new UserMessage(getGenericValidationMessageKey()));
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/PopupTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/PopupTag.java
index 62dc5d6a7794bb24ba7ee2740ce24d8b4c13f6c7..e328272e595e30ec1e19654a21db00e6e94a66a9 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/PopupTag.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/PopupTag.java
@@ -81,7 +81,7 @@ public class PopupTag extends AbstractHtmlElementTag {
 		}
 		if (pageStatus != null) {
 			if (pageStatus.isReadOnly()) {
-				if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit())) {
+				if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit(), this.pageContext)) {
 	                pageContext.getRequest().setAttribute("skipElement", Boolean.TRUE);
                     return (SKIP_BODY);
 				}
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/RadioButtonTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/RadioButtonTag.java
index 7ceabc2764f972dcca8716e28c66b64e786102a7..41982d3620bb85aacbca0f7bd6fe0a5001774fae 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/RadioButtonTag.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/RadioButtonTag.java
@@ -109,7 +109,7 @@ public class RadioButtonTag extends
 	}
 
 	private void protectField() throws JspException {
-		if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit())) {
+		if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit(), this.pageContext)) {
 			setReadonly(true);
 			setDisabled(true);
 			setTabindex("-1");
@@ -122,7 +122,7 @@ public class RadioButtonTag extends
 	@Override
 	public int doEndTag() throws JspException {
 		super.doEndTag();
-		if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo()) && !TagUtils.isBootstrapTheme()) {
+		if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo(), this.pageContext) && !TagUtils.isBootstrapTheme()) {
 			writeDojoScript(tagWriter);
 		}
 		return EVAL_PAGE;
@@ -135,7 +135,7 @@ public class RadioButtonTag extends
 		script.append("widgetType : 'dijit.form.RadioButton',");
 		script.append("widgetAttrs : {");
 
-		script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired()));
+		script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired(), this.pageContext));
 
 		script.append("}}));");
 		TagUtils.getCurrentForm(pageContext).addScript(script);
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SelectTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SelectTag.java
index fc3dd67ce0a291852280e9599443d3e1bbb3bcee..bed101b2028c93ddd280914c19cd41dec15b9d7b 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SelectTag.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SelectTag.java
@@ -86,7 +86,7 @@ public class SelectTag extends
 	}
 
 	private void protectField() throws JspException {
-		if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit())) {
+		if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit(), this.pageContext)) {
 			setDisabled(true);
 		}
 	}
@@ -94,7 +94,7 @@ public class SelectTag extends
 	@Override
 	public int doEndTag() throws JspException {
 		super.doEndTag();
-		if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo()) && !TagUtils.isBootstrapTheme()) {
+		if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo(), this.pageContext) && !TagUtils.isBootstrapTheme()) {
 			writeDojoScript(tagWriter);
 		}
 
@@ -112,7 +112,7 @@ public class SelectTag extends
 		script.append("widgetType : 'dijit.form.FilteringSelect',");
 		
 		script.append("widgetAttrs : {");
-		script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired()));
+		script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired(), this.pageContext));
 		script.append("}}));");
 
 		TagUtils.getCurrentForm(pageContext).addScript(script);
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SubmitTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SubmitTag.java
index aeb788de17960a4cd705a5d3bfcc7cda9844672d..a132b9644be47c879f1c70016142dd78d1a680c8 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SubmitTag.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/SubmitTag.java
@@ -132,13 +132,13 @@ public class SubmitTag extends
 
 	private boolean isSkipValidation() throws JspException {
 		if (getSkipValidation() == null) {
-			return ExpressionEvaluationUtils.evaluateBoolean("renderAsLink", getRenderAsLink());
+			return ExpressionEvaluationUtils.evaluateBoolean("renderAsLink", getRenderAsLink(), this.pageContext);
 		}
-		return ExpressionEvaluationUtils.evaluateBoolean("skipValidation", getSkipValidation());
+		return ExpressionEvaluationUtils.evaluateBoolean("skipValidation", getSkipValidation(), this.pageContext);
 	}
 
 	private boolean isRenderAsLink() throws JspException {
-		return ExpressionEvaluationUtils.evaluateBoolean("renderAsLink", getRenderAsLink());
+		return ExpressionEvaluationUtils.evaluateBoolean("renderAsLink", getRenderAsLink(), this.pageContext);
 	}
 
 	public String getSurroundWithTag() {
@@ -285,11 +285,11 @@ public class SubmitTag extends
         	tagWriter.endTag();
         }
 
-		if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo()) && !TagUtils.isBootstrapTheme()) {
+		if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo(), this.pageContext) && !TagUtils.isBootstrapTheme()) {
 			writeDojoScript(tagWriter);
 		}
 
-		if (ExpressionEvaluationUtils.evaluateBoolean("ajaxCall", getAjaxCall())) {
+		if (ExpressionEvaluationUtils.evaluateBoolean("ajaxCall", getAjaxCall(), this.pageContext)) {
 			writeDojoAjaxCall(tagWriter);
 		}
 
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TabsTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TabsTag.java
index dd7e9656cc90d08a728140bdb506246439734d80..3576178315adcc3c9a94109a33c37fd5ae890664 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TabsTag.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TabsTag.java
@@ -7,10 +7,14 @@ import it.mice.voila.runtime.web.menu.MenuFilterManager;
 import java.util.Collection;
 import java.util.Iterator;
 
+import javax.servlet.RequestDispatcher;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.jsp.JspException;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.math.NumberUtils;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 import org.springframework.web.context.support.WebApplicationContextUtils;
 import org.springframework.web.servlet.tags.form.AbstractHtmlElementTag;
 import org.springframework.web.servlet.tags.form.TagWriter;
@@ -431,7 +435,11 @@ public class TabsTag extends AbstractHtmlElementTag {
 	
 	private String prepareTabLink(TabInfoBean tabInfoBean, int ctr) {
 		String contextPath = getRequestContext().getContextPath();
-		String baseUri = getRequestContext().getRequestUri();
+		HttpServletRequest request = 
+		        ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes())
+		                .getRequest();
+		String uri = (String) request.getAttribute("org.springframework.web.util.UrlPathHelper.PATH");
+		String baseUri = contextPath + uri;
 		if (baseUri.lastIndexOf("?") > -1) {
 			baseUri += "&amp;";
 		} else {
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TextareaTag.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TextareaTag.java
index b719cc7e7df7f027e80a10dcb98979b9731d5045..558d334dc8f2851b67e42419f1f1633e8c311523 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TextareaTag.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/taglibs/TextareaTag.java
@@ -227,7 +227,7 @@ public class TextareaTag extends
 	}
 	
 	private void protectField() throws JspException {
-		if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit())) {
+		if (!ExpressionEvaluationUtils.evaluateBoolean("forceEdit", getForceEdit(), this.pageContext)) {
 			setReadonly(true);
 			setTabindex("-1");
 		    if (getCssClass() == null || getCssClass().indexOf("protected") == -1) {
@@ -242,7 +242,7 @@ public class TextareaTag extends
 		if (isLeftCharsIndicator()) {
 			writeLeftCharsPart();
 		}
-		if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo()) && !TagUtils.isBootstrapTheme()) {
+		if (!ExpressionEvaluationUtils.evaluateBoolean("disableDojo", getDisableDojo(), this.pageContext) && !TagUtils.isBootstrapTheme()) {
 			writeDojoScript(tagWriter);
 		}
         if (getUseWysiwyg().startsWith("onButtonSwitch")) {
@@ -284,7 +284,7 @@ public class TextareaTag extends
 			script.append("widgetType : 'voila.form.ValidationSimpleTextarea',");
 		}
 		script.append("widgetAttrs : {");
-		script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired()));
+		script.append("required : " + ExpressionEvaluationUtils.evaluateBoolean("required", getRequired(), this.pageContext));
 		script.append(",regExp : \"(.|\\\\s)*\"");
 		if (getMaxLength() != null) {
 			script.append(",maxLength : " + getMaxLength());
@@ -300,7 +300,7 @@ public class TextareaTag extends
 		setRequired("false");
 		setTabindex(null);
 		setCssClass(null);
-		setDisabled(true);
+		setDisabled(false);
 		setFitContent(false);
 		setRequired(null);
 		setForceEdit(null);
diff --git a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/util/ExpressionEvaluationUtils.java b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/util/ExpressionEvaluationUtils.java
index 3190f2e50138951f4ce19eb41795cdbbdb7719db..2cb8dd06b41c96dbe4a622578b0eee6686a60b0d 100644
--- a/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/util/ExpressionEvaluationUtils.java
+++ b/voila-runtime-springmvc/src/main/java/it/mice/voila/runtime/springmvc/util/ExpressionEvaluationUtils.java
@@ -251,8 +251,4 @@ public class ExpressionEvaluationUtils {
 				exprValue, resultClass, pageContext.getVariableResolver(), null);
 	}
 
-	public static boolean evaluateBoolean(String a, String b) {
-		return a.equals(b);
-	}
-
 }
diff --git a/voila-runtime-springtest/pom.xml b/voila-runtime-springtest/pom.xml
index 7d7202367fd3c60f6a9d502bb1ea033f040e9877..0ab4df46fb284dfc9d1351b5aee79fe4375f8e24 100644
--- a/voila-runtime-springtest/pom.xml
+++ b/voila-runtime-springtest/pom.xml
@@ -41,17 +41,6 @@
     			<artifactId>commons-collections</artifactId>
     		</exclusion>
     	</exclusions>
-    </dependency>
-    <dependency>
-    	<groupId>org.apache.velocity</groupId>
-    	<artifactId>velocity</artifactId>
-    	<version>1.6.4</version>
-    	<exclusions>
-    		<exclusion>
-    			<groupId>commons-collections</groupId>
-    			<artifactId>commons-collections</artifactId>
-    		</exclusion>
-    	</exclusions>
     </dependency>
 	</dependencies>
 </project>
\ No newline at end of file
diff --git a/voila-runtime-web/src/main/java/it/mice/voila/runtime/web/filter/RuntimeMultipartResolver.java b/voila-runtime-web/src/main/java/it/mice/voila/runtime/web/filter/RuntimeMultipartResolver.java
index bc7e0b743b2137b089b3a577c15a5467fa8b9896..6b000fb93a8ce19c761e6eeefd782b13365c4c20 100644
--- a/voila-runtime-web/src/main/java/it/mice/voila/runtime/web/filter/RuntimeMultipartResolver.java
+++ b/voila-runtime-web/src/main/java/it/mice/voila/runtime/web/filter/RuntimeMultipartResolver.java
@@ -6,12 +6,16 @@ import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.Map;
 
+import org.springframework.context.annotation.Bean;
 import org.springframework.util.Assert;
 import org.springframework.web.multipart.MultipartException;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.multipart.commons.CommonsMultipartResolver;
 import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;
 import org.springframework.web.multipart.support.StandardServletMultipartResolver;
 
+import javax.servlet.MultipartConfigElement;
+import javax.servlet.ServletRegistration;
 import javax.servlet.ServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequestWrapper;