JSF2-Spring3集成
ApplicationContext.xml文件:JSF2-Spring3集成,spring,jsf,jsf-2,Spring,Jsf,Jsf 2,ApplicationContext.xml文件: @Named("loginService") public class LoginServiceImpl implements LoginService { public String serviceDetails() { return "==From Service=="; } } 我在返回时收到loginService的空指针异常 name+->+login
@Named("loginService")
public class LoginServiceImpl implements LoginService {
public String serviceDetails() {
return "==From Service==";
}
}
我在返回时收到loginService的空指针异常
name+->+loginService.serviceDetails
1如何解决上述问题
2而不是@ManagedBeanname=helloBean我可以使用@Inject吗?如何做到这一点?我认为您不能同时使用@ManagedBean和spring。如果希望bean由spring管理,则需要使用faces-config.xml中的,然后在JSF bean上使用@Named和@Scopesession。然后,您可以而且必须使用@Inject而不是@ManagedX
作为一个旁注——避免按名称引用非jsf bean——只依赖它们的类型——这至少会为您节省重构方面的麻烦。对于JSFbean,您可以依赖默认命名并使用@Named而不带参数。在faces-config.xml中仅指定ELResolver就足够了吗?或者我还需要指定托管bean名称、类和作用域吗?只有el解析器。其余的都是从Bean上的注释中获得的。我是否可以在spring ApplicationContext.xml文件而不是faces-config.xml中包含这些el解析器?因此,整个应用程序只有一个xml文件。您必须告诉JSF如何解析其bean。但这是faces-context.xmlok中所需的唯一内容,最终通过JSR 330@NamedhelloBean和@Scoperequest与EL解析器的faces-config.xml一起解决。
@Named("loginService")
public class LoginServiceImpl implements LoginService {
public String serviceDetails() {
return "==From Service==";
}
}
<beans
<context:component-scan base-package="com.myapp"/>
</beans>