[英]injection with spring in the managed bean :
我创建了一个使用JSF和托管bean的简单应用程序。我试图从托管bean实例化将数据存储到数据库的spring bean。 但是,由于我得到nullPointerExcpetion, “ @Autowired ”注释似乎不起作用 :
javax.faces.el.EvaluationException:java.lang.NullPointerException
当有调用authenticationComponent.authenticate()方法时出现问题
rmq :我测试了ClientService的方法,一切都很好
托管Bean:
@ManagedBean(name="authenticationComponent")
@RequestScoped
public class AuthenticationComponent implements Serializable {
private static final long serialVersionUID = -5085727127290746426L;
private static final String SUCCESS = "success";
private static final String ERROR = "error";
@Autowired
ClientService clientService;
Client client;
String clientName;
String clientPass;
public String authenticate() {
client = clientService.authenticate(clientName, clientPass);
if (client != null) {
return SUCCESS;
}
return ERROR;
}
authentification.xhtml
<p:inputText id="userName" required="true" label="User Name" title="Enter Your Name !" value="#{authenticationComponent.clientName}"/> <p:tooltip for="userName" styleClass="tooltip" showEvent="focus" hideEvent="blur" /> <h:panelGroup> <h:outputText value="User Password : " /> <h:outputText style="color:red" value="* " /> </h:panelGroup> <p:inputText id="userPass" required="true" label="User Password" title="Enter Your Password !" value="#{authenticationComponent.clientPass}" /> <!-- label option is needed for messages component --> <p:tooltip for="userPass" styleClass="tooltip" showEvent="focus" hideEvent="blur" /> <p:commandButton id="submitLoginButton" update="loginPanelGrid,messages" value="Sign In" icon="ui-icon-check" action="#{authenticationComponent.authenticate()}" /> <p:commandButton id="newUserButton" update="loginPanelGrid,messages" value="Sign Up" icon="ui-icon-plus" />
的applicationContext:
<bean id="clientService" class="com.webapp.service.ClientServiceImpl">
<property name="clientDao" ref="clientDao" />
</bean>
<bean id="genericDao" class="com.webapp.dao.GenericDaoImpl" abstract="true" >
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="clientDao" class="com.webapp.dao.ClientDaoImpl" parent="genericDao">
<constructor-arg ref="client" />
</bean>
<bean id="client" class="com.webapp.model.Client"/>
首先,您将在faces-config.xml
文件中需要一个自定义的el-resolver:
<application>
<!-- For DI of beans from Spring WebApplicationContext -->
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
然后,您将需要使用注释@ManagedProperty
如下所示:
@ManagedProperty(value = "#{clientService}")
ClientService clientService;
因此spring el-resolver可以按名称注入服务bean。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.