juplo:variables accepts expressions as arguments
[juplo-dialect] / src / main / java / de / juplo / thymeleaf / ImportVariablesAttrProcessor.java
index e864ab1..aac37a6 100644 (file)
@@ -22,9 +22,13 @@ import org.thymeleaf.context.IContext;
 import org.thymeleaf.context.VariablesMap;
 import org.thymeleaf.dom.Element;
 import org.thymeleaf.dom.Node;
+import org.thymeleaf.exceptions.TemplateProcessingException;
 import org.thymeleaf.processor.ProcessorResult;
 import org.thymeleaf.processor.attr.AbstractAttrProcessor;
 import org.thymeleaf.resourceresolver.IResourceResolver;
+import org.thymeleaf.standard.expression.IStandardExpression;
+import org.thymeleaf.standard.expression.IStandardExpressionParser;
+import org.thymeleaf.standard.expression.StandardExpressions;
 import org.thymeleaf.templateresolver.ITemplateResolver;
 import org.thymeleaf.templateresolver.TemplateResolution;
 
@@ -65,7 +69,25 @@ public class ImportVariablesAttrProcessor extends AbstractAttrProcessor
       )
   {
     Configuration config = arguments.getConfiguration();
+
+    Configuration configuration = arguments.getConfiguration();
+
     String parameter = element.getAttributeValue(name);
+    try
+    {
+      IStandardExpressionParser parser =
+          StandardExpressions.getExpressionParser(configuration);
+      IStandardExpression expression =
+          parser.parseExpression(configuration, arguments, parameter);
+      parameter = (String)expression.execute(configuration, arguments);
+    }
+    catch (TemplateProcessingException e) { }
+
+    if (parameter != null && !parameter.trim().isEmpty())
+    {
+      LOG.info("ignoring empty parameter");
+      return ProcessorResult.OK;
+    }
 
     Iterator<Entry<String, Object>> it = null;