Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF2-Spring3集成_Spring_Jsf_Jsf 2 - Fatal编程技术网

JSF2-Spring3集成

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

ApplicationContext.xml文件:

    @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>