2015-03-18 64 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; 
    } 
    ...