簡體   English   中英

在托管bean中用spring注入:

[英]injection with spring in the managed bean :

我創建了一個使用JSF和托管bean的簡單應用程序。我試圖從托管bean實例化將數據存儲到數據庫的spring bean。 但是,由於我得到nullPointerExcpetion,@Autowired ”注釋似乎不起作用

javax.faces.el.E​​valuationException: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM