当我使用javax.annotation.ManagedBean时,Eclipse不会在EL中自动完成bean方法 [英] Eclipse won't autocomplete bean methods in EL when I use javax.annotation.ManagedBean

查看:163
本文介绍了当我使用javax.annotation.ManagedBean时,Eclipse不会在EL中自动完成bean方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用JSF和Spring创建了一个应用程序,我使用了@repository,@service @component和@autowired的注释,但是当我编写Facelet文件时,bean无法显示,任何人都可以帮助我



faces-config.xml:

 <?xml version =1.0 = 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.0encoding =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 />

<! - 数据源声明 - >
< bean id =dataSourceclass =org.springframework.jdbc.datasource.DriverManagerDataSource>

< property name =driverClassNamevalue =$ {database.driver}/>

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

< property name =usernamevalue =$ {database.user}/>

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

< / bean>

<! - 会话工厂声明 - >
< bean id =SessionFactoryclass =org.springframework.orm.hibernate4.LocalSessionFactoryBean>
< property name =dataSourceref =dataSource/>
< property name =packagesToScanvalue =com.tds.erp.model/>
<! - < property name =packagesToScan>
< list>
< value> net.javabeat.spring.model< / value>
< / list>
< / property> - >

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

<! - 启用基于注释的事务性行为的配置 - >
<! - < tx:annotation-driven transaction-manager =txManager/> - >

<! - 事务管理器被定义 - >
< bean id =hibernateTransactionManagerclass =org.springframework.orm.hibernate4.HibernateTransactionManager>
< property name =sessionFactoryref =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();
私人列表<员工> 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;
}
}


解决方案

解决问题,问题是我在托管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();
私人列表<员工> 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;
}
...


I created an application using JSF and Spring and I used the annotations @repository, @service @component and @autowired but when I am coding the Facelet file the beans cannot show up, can any one help me

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>

the 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;
    }
}

解决方案

I solve the problem, and the problem is that I imported a wrong annotation in the managed bean the wrong import:

import javax.annotation.ManagedBean;

the right import:

import javax.faces.bean.ManagedBean;

so the result :

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;
    }
    ...

这篇关于当我使用javax.annotation.ManagedBean时,Eclipse不会在EL中自动完成bean方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆