这是我的代码
public class AddressbookUI extends UI {
@Autowired
private AddressService addressService;
.....在我的方法中
Contact contact=new Contact();
contact.setName("Test");
contact.setCity("Colombo");
addressService.addContact(contact);
这是我的服务类
@Service
@Repository
public class AddressServiceImpl implements AddressService {
private SessionFactory sessionFactory;
@Transactional
public void addContact(Contact contact) {
sessionFactory.getCurrentSession().saveOrUpdate(contact);
}
}
这是我的春天语境xml
<import resource="databaseContext.xml" />
<context:annotation-config />
<context:component-scan base-package="com.priyan.vaadin" />
<context:spring-configured />
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="packagesToScan" value="com.priyan.vaadin" />
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:jdbc.properties</value>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
这是我的web.xml
<context-param>
<description>Vaadin production mode</description>
<param-name>productionMode</param-name>
<param-value>true</param-value>
</context-param>
<servlet>
<servlet-name>Vaadin</servlet-name>
<servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
<init-param>
<description>Vaadin UI to display</description>
<param-name>UI</param-name>
<param-value>com.priyan.vaadin.AddressbookUI</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Vaadin</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext.xml</param-value>
</context-param>
所有其他的工作正常。页面也很好地加载。 但是当我按下保存按钮时,它会转到那些行,而在服务呼叫点,它会返回null
请帮我解决这个问题
感谢所有
答案 0 :(得分:1)
AddressbookUI
未显示由spring管理。它是用new
实例化的吗?
这个bean必须实例化并通过spring注入才能进行自动装配。
答案 1 :(得分:1)
您目前正在使用通过UIProvider
实例化UIs
的默认Class.newInstance()
,因此Spring容器无法在AddressbookUI
类中自动装配字段。
但是,编写一个通过Spring容器创建UIProvider
的{{1}}是一项简单的任务,我已经回答了here。
还有一些开源库将Vaadin与Spring(包括我的)集成在一起。只需在Vaadin Directory中搜索Spring。
答案 2 :(得分:0)
@VaadinUI
注释,您的UI
子类将接受自动装配。