- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Tomcat 7、JSF 2、Spring 3、Java 6
访问 jsf 页面时,UserBean.java 中的 userService.checkUser(getLogin()) 出现 NullPointerException(userService 为 null)。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
</web-app>
faces-config.xml
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
<resource-bundle>
<base-name>i18n</base-name>
<var>msg</var>
</resource-bundle>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>ru</supported-locale>
</locale-config>
</application>
</faces-config>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- Services Beans -->
<bean id="userService" class="service.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
<!-- DAOs -->
<bean id="userDao" class="dao.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- Hibernate session factory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:/hibernate.cfg.xml</value>
</property>
</bean>
<tx:annotation-driven/>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
</beans>
UsersBean.java
package beans;
import service.UserService;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import java.io.Serializable;
@ManagedBean(name="usersBean")
@SessionScoped
public class UsersBean implements Serializable{
private String login;
private String password;
@ManagedProperty(name = "userService", value = "#{userService}")
private UserService userService;
...Getters, setters for every field...
public void checkRegistred(){
userService.checkUser(getLogin());
}
}
xhtml 文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Simple JSF Facelets page</title>
</h:head>
<h:body>
<ui:composition template="layout.xhtml">
<ui:define name="content">
<h:link value="First page" outcome="index.xhtml"></h:link>
<br/>
<h:link value="Third page" outcome="third.xhtml"></h:link>
<br/>
Hello #{usersBean.login} with pass #{usersBean.password}
<br/>
You are #{usersBean.checkRegistred()}
</ui:define>
</ui:composition>
</h:body>
</html>
最佳答案
查看 this question及其答案。在您的情况下,当您使用 XML 配置时,为了使用 @autowired 注释,您还需要修改您的 userServide 声明,如下所示:
<bean id="userService" class="service.UserServiceImpl" autowire-candidate="true">
<property name="userDao" ref="userDao"/>
</bean>
将 autowire-candidate
属性设置为 true 后,userService
将可用于 Autowiring 。
更新:
package beans;
import ...
@SessionScoped
public class UsersBean implements Serializable {
private String login;
private String password;
@Autowired
private UserService userService;
...Getters, setters for every field...
public void checkRegistred(){
userService.checkUser(getLogin());
}
}
此外,在您的 XML 中应该可以找到:
<context:component-scan base-package="beans.*" />
<context:annotation-config />
关于java - 将 Spring 服务 bean 注入(inject) JSF ManagedBean 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10417665/
好的,这是我的 session bean。我总是可以从任何 Servlet 或过滤器中检索 currentUser。那不是问题问题是fileList和currentFile。我已经用简单的 int 和
我觉得 Java EE 6 规范有些困惑。有几组注释。 我们有javax.ejb注释如 @Stateful和 @Stateless用于创建 EJB。 还有一个@javax.annotation.Man
这个问题已经有答案了: Backing beans (@ManagedBean) or CDI Beans (@Named)? (5 个回答) 已关闭 7 年前。 我刚刚创建了一个新的 Maven 项
我正在开发一个复合组件,它必须进行一些计算才能使布局正常工作。对于 EL 来说过于复杂的计算(实际上并不复杂,但我无法通过 EL 执行它们)。我可以专门为该复合组件创建一个 ManagedBean 吗
我在@ManagedBean类中使用Bean管理事务来手动管理事务, @ManagedBean(name = "clients") @ViewScoped @URLMapping(id = "sous
这个问题在这里已经有了答案: How to inject @EJB, @PersistenceContext, @Inject, @Autowired, etc in @FacesConverter
我有一个 jsf View ,它显示了来自表中托管 bean( View 范围)的一些数据,这些数据是远程检索的。 目前,数据是通过使用 primefaces 轮询组件从客户端 View 轮询来更新的
在我的网络应用程序中,当我点击登录链接时,Tomcat 网络服务器抛出以下异常: exception javax.servlet.ServletException: /aluno_jsf.xhtml:
我对应用程序中 ManagedBeans 的使用有疑问。 我有一个页面,其中包含不同的 JSP 组件,如 autoComplete、selectOneMenu、textarea、inputFields
为了获得良好的用户反馈,我在网络应用程序的多个站点上使用消息。 要添加消息,我简单地使用: FacesContext.getCurrentInstance().addMessage(null, new
我一直在为我的 bean 使用注释(我以前没有使用过它们),我发现我必须包含一些依赖项等等,如下所示: com.sun.faces
我是 richfaces 的新手,我想使用注释而不是 xml 配置来支持 bean 类 [就像 JSF 2.0] 我正在使用 richfaces 4.0 并将所有必需的 jar 包含在我的构建路径中。
我目前正在将一个项目从 JBoss 4.2.2 迁移到 JBoss 6.0.0,我还在使用 CDI 添加依赖注入(inject)并从 JSF 1.2 迁移到 JSF 2.0。我向 ejb-packag
可以将无状态 session bean 注入(inject) jsf 托管 bean 中吗? 我有 @ManagedBean(name = "imageUpload") @RequestScoped
我有一个名为 Foo 的类。还有一个名为 FooBean 的 ManagedBean。在页面(Facelet)中,我从用户那里获取新的 Foo 信息并将其插入到数据库中。首次提交数据后,将启用打印按钮
我有fileUpload的managementBean,一旦文件上传,我需要根据从解析器下拉列表中选择的值调用不同的解析器,然后在解析器中创建DetailsClass对象,其中调用该特定类的getDe
我尝试编写一个应用程序来创建 PDF 文件,它使用 JavaServer Faces。当我将文本框的值从 bean 赋予工厂类时,我遇到了一个问题,这些值丢失了。我想知道为什么会发生这种情况,已经尝试
我想知道在两个 ViewScoped bean 之间传递数据(对象)的最佳实践是什么。 由于出色解释的问题,它们需要在 View 范围内here (简而言之:在这两个 View 中,我都在 h:dat
我有 Controller-ManagedBeans 和 Model-ManagedBeans(如 MVC 模式)。 这是我的 Controller : @ManagedBean @Req
这个问题在这里已经有了答案: Identifying and solving javax.el.PropertyNotFoundException: Target Unreachable (18 个回
我是一名优秀的程序员,十分优秀!