package com.hollycrm.hollyv8.zsptest.zsp.service.impl;import ...
public class UserManagerServiceImpl implements UserManagerService {
    private UserManagerDao userDao;
   
    public void setUserManagerDao(UserManagerDao userDao){
       
       this.userDao = userDao ;
      }
      public UserManagerDao getUserManagerDao(){
       
       return this.userDao ;
      }
      public void addUser(UserInfo user) {       this.userDao.add(user) ;      }     public void deleteUser(String account) {
     // TODO Auto-generated method stub
     this.userDao.delete(account) ;
     }
     public UserInfo getUser(String account) {
     // TODO Auto-generated method stub
     return this.userDao.getUserInfo(account);
     }
     public UserInfo getUser(String name, String account) {
     // TODO Auto-generated method stub
     List<UserInfo> list = this.userDao.getUserInfo(name, account);
     if(list != null&&list.size() > 0){
     return list.get(0);
     }else{
     return null;
     }
     }
     public List<UserInfo> listUser() {
     // TODO Auto-generated method stub
     return this.userDao.getUserInfos();
     }
     public void saveOrUpdate(UserInfo user) {
     // TODO Auto-generated method stub
     this.userDao.saveOrUpdate(user);
     }
     public UserInfo query(){   
     return this.userDao.query();
     } }
com.hollycrm.hollyv8.zsptest.zsp.service.impl.UserManagerServiceImpl cannot be cast to java.util.Collection 
大家帮我看看这是怎么回事?

解决方案 »

  1.   

    你什么情况下报这个错?
    倒是发现你的注入怪怪的。public void setUserManagerDao(UserManagerDao userDao){
              
              this.userDao = userDao ;
             }
             public UserManagerDao getUserManagerDao(){
              
              return this.userDao ;
             }
    应该是想用setter注入吧,但是你的方法名为什么不是setUserDao,却是setUserManagerDao,你这样如何注入?
      

  2.   

    方法名一定要用setUserDao吗?
    我是在打开jsp页面的时候报这个错误的。
      

  3.   


    你用setter注入, private UserManagerDao userDao;必须是setUserDao。你jsp中如何写的,贴一下。
      

  4.   

    这是主页面,zsp_search.jsp
    <%@ page language="java" import="java.util.*,com.hollycrm.hollyv8.constant.*"  pageEncoding="GBK"%>
    <%@ taglib prefix="view" uri="/WEB-INF/hollycrm-view.tld"  %>
    <%@ taglib prefix="sv" uri="/WEB-INF/hollycrm-services.tld"  %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%@ page import="java.util.ArrayList"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html>
     <head><title>人员查询系统</title>
    <link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/framework/css/style.css">
    <link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/framework/css/hollycrm.css">

    <script language="javascript" src="<%=request.getContextPath() %>/framework/js/util.js"></script>
    <script src="<%=request.getContextPath() %>/framework/js/ScrollGrid.js"></script>
    <script src="<%=request.getContextPath() %>/framework/js/leftMenu.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath() %>/frame/js/frame.js" charset="gb2312"></script>
    <script type="text/javascript">
    function submitform(){
    with(document.getElementById('queryallform')){
    action="ZspAction";
    method="get";
    submit();
    }
    }
    </script>
    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    </head>
    <body>
    <form action="ZspAction!query.action">
    <view:formtable>
                <view:formtitle name="人员查询">
                 <view:buttons>
                  <view:button name="查 询" type="submit" onclick="submitform();"  /> 
                <view:button name="重 置" type="reset"/>    
          
              
          </view:buttons>  
        </view:formtitle>  
        
        <view:formCondition>           
    <view:formtr>
    <view:formlabel text="账  号:"></view:formlabel>
    <view:forminput><input name="account" type="text"> </view:forminput>
    <view:formlabel text="姓  名:" ></view:formlabel>
    <view:forminput><INPUT name="name" type="text"> </view:forminput>
    </view:formtr>
    <view:formtr>
    <view:formlabel text="生日:"></view:formlabel>
    <view:forminput width="20%"><view:datepicker name="stateHireDate"/></view:forminput>
    <view:formlabel text="性别:" ></view:formlabel>
    <view:forminput>
        男<input type="radio" checked="checked" name="sex" value="b" />
                                                                        女<input type="radio"  name="sex" value="g" /><br />
    <!--<sv:codeMap name="user.status" codeType="<%=CodeType.USERSTATE%>" ></sv:codeMap>-->
    </view:forminput>
    </view:formtr>
       </view:formCondition>
       </view:formtable>   
    </form>
    </body>
    </html>showresult.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@ page import="java.util.ArrayList"%>
    <%@ taglib prefix="view" uri="/WEB-INF/hollycrm-view.tld"  %>
    <%@ taglib prefix="sv" uri="/WEB-INF/hollycrm-services.tld" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%@ page import="com.hollycrm.framework.util.ToFormQueryCondition"%>
    <%@page import="com.hollycrm.hollyv8.constant.CodeType"%>
    <%@page import="com.hollycrm.hollyv8.zsptest.zsp.action.ZspAction"%>
    <%@ page import="com.hollycrm.hollyv8.zsptest.zsp.vo.UserInfo"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <TITLE>人员增删改查</TITLE>  

     </head>
     <body>
        
        <table>
          <tr>
            <td>账号</td>
            <td>姓名</td>
            <td>生日</td>
            <td>性别</td>
          </tr>
          <s:iterator value="users" >
      <tr>
      <td><s:property value="account"/></td>
      <td><s:property value="name"/></td>
      <td><s:property value="birthday"/></td>
      <td><s:property value="sex"/></td>
      <td> <s:a href="ZspAction!add.action">增加</s:a></td>
      <td><a href="ZspAction!update?id=<s:property value="account"/>">修改</a>   
      <a href="ZspAction!delete?id=<s:property value="account"/>">删除</a></td>
      </tr>
      </s:iterator>
        </table>
    </body> 
    </html>
    这是结果显示页面,我刚才说错了,如果在zsp_search.jsp页面中什么都不输入,直接点查询,没有错误,如果输入点东西,就会报上面的错误。
      

  5.   

    struts+spring+Hibernate 不知道您是不是问的这个。
      

  6.   

    List<UserInfo> list = this.userDao.getUserInfo(name, account);
    强制转换呢?List<UserInfo> list =(UserInfo) this.userDao.getUserInfo(name, account);
      

  7.   

    哪個jsp多少行報這個錯?你的action咋寫的?
      

  8.   

    package com.hollycrm.hollyv8.zsptest.zsp.action;import java.util.ArrayList;
    import java.util.Collection;
    import java.util.List;import javax.servlet.http.HttpServletRequest;import org.apache.log4j.Logger;
    import org.apache.struts2.interceptor.ServletRequestAware;import com.hollycrm.framework.DefaultBeanFactory;
    import com.hollycrm.hollyv8.organization.user.action.UserAction;
    import com.hollycrm.hollyv8.zsptest.zsp.service.UserManagerService;
    import com.hollycrm.hollyv8.zsptest.zsp.vo.UserInfo;
    import com.opensymphony.xwork2.ActionSupport;public class ZspAction extends ActionSupport implements ServletRequestAware{
    private HttpServletRequest request;

    private static final long serialVersionUID = 8729730792551753250L;

    private static Logger logger = Logger.getLogger(UserAction.class);

    public void setServletRequest(HttpServletRequest request) {
    this.request=request;
    }
      public String ZspAction(){      

         return "list_success";

           }  
      
    private UserManagerService userManager;
     private List<UserInfo> users;
     private UserInfo user;
    // private String id;
     private String account;
     private String name;
     private String birthday;
     private String sex;
     private String[] accounts;
    public String[] getAccounts() {
    return accounts;
    } public void setAccounts(String[] accounts) {
    this.accounts = accounts;
    } public UserManagerService getUserManager() {
    return userManager;
    } public void setUserManager(UserManagerService userManager) {
    this.userManager = userManager;
    } public List<UserInfo> getUsers() {
    return users;
    } public void setUsers(List<UserInfo> users) {
    this.users = users;
    } public UserInfo getUser() {
    return user;
    } public void setUser(UserInfo user) {
    this.user = user;
    } /*public String getId() {
    return id;
    } public void setId(String id) {
    this.id = id;
    }*/ public String getAccount() {
    return account;
    } public void setAccount(String account) {
    this.account = account;
    } public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } public String getBirthday() {
    return birthday;
    } public void setBirthday(String birthday) {
    this.birthday = birthday;
    } public String getSex() {
    return sex;
    } public void setSex(String sex) {
    this.sex = sex;
    }

    public String query1(){
    users=new ArrayList<UserInfo>();
    UserInfo u=new UserInfo();
    u.setAccount("zhangpf");
    u.setName("zhangpengfei");
    u.setBirthday("1981-12-02");
    u.setSex("m");
    users.add(u);
    return "list1_success";
    }

    public String query(){
    users=new ArrayList<UserInfo>();
    UserManagerService b=(UserManagerService) DefaultBeanFactory.getBean("UserManagerService");
    if(b.getUser(account)!=null){
    users.addAll((Collection<? extends UserInfo>) b);
    }
    return "list1_success";
    }

    public String add() {
      if (this.userManager.getUser(user.getName(),user.getAccount()) != null) {
       return INPUT;
      } else {
       this.userManager.addUser(user);
       return "success_add";
      }  }  public String list() {
      this.users = this.userManager.listUser();
      if (this.users.size() > 0) {
       return "list1_success";
    //   return SUCCESS;
      } else {
       return INPUT;
      }
     }  public String delete() {
       
       if (this.account !="0" ) {
       this.userManager.deleteUser(this.account);
      } else {
       if (accounts.length > 0) {
        for (String account : accounts) {
         this.userManager.deleteUser(account);
        }
       }
      }
      if (this.userManager.listUser().size() > 0) {
      return "list1_success";
    //  return SUCCESS;
      } else {
       return INPUT;
      }
     }
     public String saveOrUpdate() {   this.userManager.saveOrUpdate(user);
      return SUCCESS;  }  public String edit() {   this.user = this.userManager.getUser(account);
      return "success_edit";  }  public String save() {
      String account = this.user.getAccount();
      user = this.userManager.getUser(account);
      return SUCCESS;
     }  public String update() {   String account = this.user.getAccount();
      this.userManager.saveOrUpdate(user);
      //return SUCCESS;
      return "success_update";
     }  public String login() {
      UserInfo emp = this.userManager.getUser(name, account);
      List list = this.userManager.listUser();
      if (null != emp) {
       return SUCCESS;
      } else {
       if (list.size() > 0) {
        return INPUT;
       } else {
        return ERROR;
       }
      }
     }
    }
      

  9.   

    你的IOC用的真是奇怪,讓人雲裏霧裏。你的錯誤在這裏: public String query(){
                users=new ArrayList<UserInfo>();            
                UserManagerService b=(UserManagerService) DefaultBeanFactory.getBean("UserManagerService");
                if(b.getUser(account)!=null){
                    users.addAll((Collection<? extends UserInfo>) b);
                }            
                return "list1_success";            
            }
            
    users.addAll((Collection<? extends UserInfo>) b);
    這一句有問題。
      

  10.   

    问题貌似出在ZspAction中的这一句可是要怎么改呢???
    users.addAll((Collection<? extends UserInfo>) b);
      

  11.   

     public String query(){
                users=new ArrayList<UserInfo>();            
                UserManagerService b=(UserManagerService) DefaultBeanFactory.getBean("UserManagerService");
                if(b.getUser(account)!=null){
                    users.addAll((Collection<? extends UserInfo>) b);
                }            
                return "list1_success";            
            }
    这一段要怎么写呢?我试了半天都不行,我是新手,请大家帮忙。
      

  12.   


    怎麽改?你的整個IOC都有問題。
    你的b是UserManagerService類型,
    怎麽可以強制轉換為(Collection<? extends UserInfo>)?
      

  13.   

    public String query(){
    users=new ArrayList<UserInfo>();
    UserManagerService b= (UserManagerService) DefaultBeanFactory.getBean("UserManagerService");
    b.addUser(user);
    return "list1_success";
    }
    我把它改成上面这样,倒是不报那个错误了,但是报另外一个错误attempt to create saveOrUpdate event with null entity我真是崭新崭新的新手,求求大家帮帮我,我快疯啦!!
      

  14.   

    user是null。你還是去看看spring 和 hibernate 基礎知識吧。
      

  15.   

    这个问题已经解决,但是现在的问题是输入的数据能够提交到数据库中,但是页面上显示不出来。我怀疑是下面的问题,不知道对不对。<s:iterator value="users" >
              <tr>
              <td><s:property value="account"/></td>
              <td><s:property value="name"/></td>
              <td><s:property value="birthday"/></td>
              <td><s:property value="sex"/></td>
              <td> <s:a href="ZspAction!add.action">增加</s:a></td>
              <td><a href="ZspAction!update?id=<s:property value="account"/>">修改</a>   
              <a href="ZspAction!delete?id=<s:property value="account"/>">删除</a></td>
              </tr>
      </s:iterator>
      

  16.   


    在action中,可以用request.setAttribute("users",users);存起來