点击提交按钮出现的异常. 在action中打断点无反应,应该是在进入之前就产生了此异常
[code="java"]
[ERROR][2009-08-04 00:26:10] -
[org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/extdemo].[action]] -org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) -
-Servlet.service() for servlet action threw exception
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '/login' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'userService' of bean class [com.extdemo.struts.action.LoginAction]: Bean property 'userService' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
Caused by:
org.springframework.beans.NotWritablePropertyException: Invalid property 'userService' of bean class [com.extdemo.struts.action.LoginAction]: Bean property 'userService' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:793)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:645)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:78)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:59)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1127)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:862)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:424)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:270)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:737)
at org.springframework.web.struts.DelegatingRequestProcessor.getDelegateAction(DelegatingRequestProcessor.java:168)
at org.springframework.web.struts.DelegatingRequestProcessor.processActionCreate(DelegatingRequestProcessor.java:146)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:230)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:834)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
at java.lang.Thread.run(Thread.java:595)
[/code]
applicationContext.xml
[code="java"]
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="transactionProxyFactory" abstract="true" lazy-init="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager" />
</property>
<property name="target">
<ref local="UserDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="del*">PROPAGATION_REQUIRED</prop>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="create*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED, readOnly</prop>
</props>
</property>
</bean>
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!--==================== DAO======================= -->
<bean id="UserDAO" class="com.extdemo.dao.impl.UserDAO">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!--====================Service======================= -->
<bean id="UserService"
class="com.extdemo.service.impl.UserService">
<property name="userDAO">
<ref local="UserDAO" />
</property>
</bean>
<!--====================Action======================= -->
<bean name="/login" class="com.extdemo.struts.action.LoginAction"
scope="prototype">
<property name="userService" >
<ref local="UserService"/>
</property>
</bean>
[/code]
IUserService接口类
[code="java"]
public interface IUserService {
public User findUserById(String id);
public List findByUserName(String userName);
public void Save(User user);
}
[/code]
IUserService实现类
[code="java"]
public class UserService implements IUserService {
private IUserDAO userDAO;
public IUserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(IUserDAO userDAO) {
this.userDAO = userDAO;
}
public void Save(User user) {
userDAO.save(user);
}
public List<User> findByUserName(String userName) {
List<User> list = userDAO.findByName(userName);
if (list.size() == 0) {
return null;
} else {
return (List<User>) list.get(0);
}
}
public User findUserById(String id) {
return userDAO.findById(id);
}
}
[/code]
action
[code="java"]
public class LoginAction extends Action {
private UserService userService;
public UserService getService() {
return userService;
}
public void setService(UserService userService) {
this.userService = userService;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
String username = loginForm.getUsername();
String password = loginForm.getPassword();
ActionForward forward = mapping.getInputForward();
User user = (User) userService.findByUserName(username);
if (user.getPassword().equals(password)) {
forward = mapping.findForward("sucess");
}
return forward;
}
}
[/code]
struts-config.xml
[code="java"]
type="com.extdemo.struts.action.LoginAction"
attribute="loginForm" name="loginForm" scope="request">
processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
parameter="com.extdemo.struts.ApplicationResources" />
className="org.springframework.web.struts.ContextLoaderPlugIn">
value="/WEB-INF/classes/applicationContext.xml" />
[/code]
web.xml
[code="java"]
<!-- Spring 配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
[/code]
从异常来看 应该是struts和spring的配置问题 以前没接触过spring 所有照搬网上的配置问题无从下手
\
环境 struts1.2+hibernate3.1+spring2.5+tomcat5.5
IDE : lomboz3.2+myeclipse5.5
整了一天,都快1点了.. 帮忙解决下,先谢谢了..
[b]问题补充:[/b]
分给谁呢?? 我晕倒 谢谢3位了。