2015-03-18 20 views
1

時,Eclipse不會自動完成EL中的bean方法我使用JSF和Spring創建了一個應用程序,並且使用了註釋@repository,@service @component和@autowired,但是當我編碼Facelet文件豆子不能顯示出來,任何一個可以幫助我當我使用javax.annotation.ManagedBean

faces-config.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<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> 
      <action-listener>org.primefaces.application.DialogActionListener</action-listener> 
      <navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler> 
      <view-handler>org.primefaces.application.DialogViewHandler</view-handler> 
     </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/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd" 
     > 


    <context:property-placeholder location="classpath:jdbc.properties" /> 
    <tx:annotation-driven transaction-manager="hibernateTransactionManager" /> 
    <context:component-scan base-package="com.tds.erp"/> 
    <context:annotation-config/> 
    <context:spring-configured/> 

    <!-- Data Source Declaration --> 
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 

     <property name="driverClassName" value="${database.driver}" /> 

     <property name="url" value="${database.url}" /> 

     <property name="username" value="${database.user}" /> 

     <property name="password" value="${database.password}" /> 

    </bean> 

    <!-- Session Factory Declaration --> 
    <bean id="SessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="packagesToScan" value="com.tds.erp.model" /> 
     <!-- <property name="packagesToScan"> 
      <list> 
       <value>net.javabeat.spring.model</value> 
      </list> 
     </property>--> 

     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
       <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
      </props> 
     </property> 
    </bean> 

    <!-- Enable the configuration of transactional behavior based on annotations --> 
    <!-- <tx:annotation-driven transaction-manager="txManager"/>--> 

    <!-- Transaction Manager is defined --> 
    <bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="SessionFactory"/> 
    </bean> 

</beans> 

的ManagedBean:

package com.tds.erp.managedController; 

import java.util.ArrayList; 
import java.util.List; 

import javax.annotation.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 

import com.tds.erp.model.Employee; 
import com.tds.erp.services.IEmployeeService; 


@Component 
@ManagedBean 
@SessionScoped 
public class EmployeeMB { 

    @Autowired 
    private IEmployeeService EmployeService; 

    private Employee employee= new Employee(); 
    private List<Employee> employeeList= new ArrayList<Employee>(); 
    private Employee selectedEmployee=new Employee(); 
    private boolean headerButtonsDisabled=true; 

    public void setEmployeService(IEmployeeService employeService) { 
     EmployeService = employeService; 
    } 

    public IEmployeeService getEmployeService() { 
     return EmployeService; 
    } 

    public Employee getEmployee() { 
     return employee; 
    } 

    public void setEmployee(Employee employee) { 
     this.employee = employee; 
    } 

    public List<Employee> getEmployeeList() { 
     return employeeList; 
    } 

    public void setEmployeeList(List<Employee> employeeList) { 
     this.employeeList = employeeList; 
    } 

    public Employee getSelectedEmployee() { 
     return selectedEmployee; 
    } 

    public void setSelectedEmployee(Employee selectedEmployee) { 
     this.selectedEmployee = selectedEmployee; 
    } 

    public boolean isHeaderButtonsDisabled() { 
     return headerButtonsDisabled; 
    } 

    public void setHeaderButtonsDisabled(boolean headerButtonsDisabled) { 
     this.headerButtonsDisabled = headerButtonsDisabled; 
    } 
} 
+0

「bea ns無法顯示「? – Stefan 2015-03-18 23:22:33

+0

是的,當我試圖將JSF與beans中的methodes聯繫起來時,它不能被列出 – Spartan 2015-03-18 23:49:26

+0

我不相信在同一個項目中使用jsf和spring是一個好主意,如果你不需要某些原因,爲什麼不直接使用JSF並從項目中刪除Spring註釋,那麼可以使用JavaEE註釋(CDI)。 – erhun 2015-03-19 09:33:51

回答

1

我解決問題,問題是,我進口了錯誤的註釋在託管bean 錯導入:

import javax.annotation.ManagedBean; 

自營進出口經營權:

import javax.faces.bean.ManagedBean; 

所以結果爲:

package com.tds.erp.managedController; 

import java.util.ArrayList; 
import java.util.List; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 

import com.tds.erp.model.Employee; 
import com.tds.erp.services.IEmployeeService; 


@Component 
@ManagedBean 
@SessionScoped 
public class EmployeeMB { 



    @Autowired 
    private IEmployeeService EmployeService; 

    private Employee employee= new Employee(); 
    private List<Employee> employeeList= new ArrayList<Employee>(); 
    private Employee selectedEmployee=new Employee(); 
    private boolean headerButtonsDisabled=true; 

    public void setEmployeService(IEmployeeService employeService) { 
     EmployeService = employeService; 
    } 

    public IEmployeeService getEmployeService() { 
     return EmployeService; 
    } 
    ...