Adding ability to resolve flow-local Spring Beans from EL expressions.

This commit is contained in:
Jeremy Grelle
2008-02-26 23:01:40 +00:00
parent 20afdef07c
commit af3ab0fcd4
3 changed files with 63 additions and 6 deletions

View File

@@ -15,6 +15,7 @@ import org.springframework.binding.expression.el.ELExpressionParser;
import org.springframework.webflow.core.collection.MutableAttributeMap;
import org.springframework.webflow.core.expression.el.RequestContextELResolver;
import org.springframework.webflow.core.expression.el.ScopeSearchingELResolver;
import org.springframework.webflow.core.expression.el.SpringBeanWebFlowELResolver;
import org.springframework.webflow.execution.RequestContext;
/**
@@ -46,6 +47,7 @@ public class LegacyJSFELExpressionParser extends ELExpressionParser {
public ELContext getELContext(Object target) {
List customResolvers = new ArrayList();
customResolvers.add(new RequestContextELResolver());
customResolvers.add(new SpringBeanWebFlowELResolver());
customResolvers.add(new ScopeSearchingELResolver());
customResolvers.add(new LegacyJSFBeanResolver());
ELResolver resolver = new DefaultELResolver(target, customResolvers);

View File

@@ -34,16 +34,12 @@ public class JsfViewFactoryCreator implements ViewFactoryCreator {
private Lifecycle lifecycle;
public JsfViewFactoryCreator() {
lifecycle = createFlowFacesLifecycle();
}
public Action createFinalResponseAction(Expression viewName, ResourceLoader resourceLoader) {
return new JsfFinalResponseAction(new JsfViewFactory(viewName, resourceLoader, lifecycle));
return new JsfFinalResponseAction(new JsfViewFactory(viewName, resourceLoader, getLifecycle()));
}
public ViewFactory createViewFactory(Expression viewName, ResourceLoader resourceLoader) {
return new JsfViewFactory(viewName, resourceLoader, lifecycle);
return new JsfViewFactory(viewName, resourceLoader, getLifecycle());
}
private Lifecycle createFlowFacesLifecycle() {
@@ -53,4 +49,11 @@ public class JsfViewFactoryCreator implements ViewFactoryCreator {
return new FlowLifecycle(defaultLifecycle);
}
private Lifecycle getLifecycle() {
if (lifecycle == null) {
lifecycle = createFlowFacesLifecycle();
}
return lifecycle;
}
}