Esiste un ambito come JSF @ViewScoped
in Spring 3.0? Ho un'applicazione che usa JSF + Spring dove i bean di supporto sono gestiti da Spring. In primavera non ho trovato alcun ambito come l'ambito wiew di JSF. Ho visto il blog Porting JSF 2.0’s ViewScope to Spring 3.0, ma non ha funzionato per me.JSF View scope in primavera
Ecco il mio tentativo sulla portata Primavera personalizzato:
import java.util.Map;
import javax.faces.context.FacesContext;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.config.Scope;
/**
* Implements the JSF View Scope for use by Spring. This class is registered as a Spring bean with the CustomScopeConfigurer.
*/
public class ViewScope implements Scope {
public Object get(String name, ObjectFactory<?> objectFactory) {
System.out.println("**************************************************");
System.out.println("-------------------- Getting objects For View Scope ----------");
System.out.println("**************************************************");
if (FacesContext.getCurrentInstance().getViewRoot() != null) {
Map<String, Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();
if (viewMap.containsKey(name)) {
return viewMap.get(name);
} else {
Object object = objectFactory.getObject();
viewMap.put(name, object);
return object;
}
} else {
return null;
}
}
public Object remove(String name) {
System.out.println("**************************************************");
System.out.println("-------------------- View Scope object Removed ----------");
System.out.println("**************************************************");
if (FacesContext.getCurrentInstance().getViewRoot() != null) {
return FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove(name);
} else {
return null;
}
}
public void registerDestructionCallback(String name, Runnable callback) {
// Do nothing
}
public Object resolveContextualObject(String key) { return null;
}
public String getConversationId() {
return null;
}
}
application-context.xml
:
<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
<property name="scopes">
<map>
<entry key="view">
<bean class="com.delta.beans.ViewScope"/>
</entry>
</map>
</property>
</bean>
Questo post può aiutare: http://stackoverflow.com/q/12884822/1055089 – Vrushank
Sì, ma l'implementazione non funziona nel mio codice – khan
potresti inserire il codice? Ho usato lo stesso nella mia app e ha funzionato. Sto usando anche JSF2 + Spring 3 ... – Vrushank