今天我用dwr验证用户名是否从用,当我整合spring的时候,就出错。
情况是这样的,我在业务层StaffBusinesImp中写了一个验证方法isRegist(String username),
public String isRegist(String username) {
Set<String> users = new HashSet<String>();
users.add("xiaoqiang");

if(users.contains(username))
{
return "用户名已占用";
}else
{
return "可用";
}

}
这样的话,可以正常调用,可是当我在方法中写上涉及到处理数据库的代码this.getHibernateTemplate().find("from StaffValue")此类的代码时,就报错了

解决方案 »

  1.   

    dwr.xml文件如下<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd"><dwr>
       <allow>
        <convert converter="bean" match="ssh.value.StaffValue" />  
         <!-- 产品材质DWR声明 -->
         <create javascript="checkUser" creator="spring">
            <param name="beanName" value="StaffBusinessDWR" />
            <include method="isRegist" />
           
         </create>
       </allow>
    </dwr>
      

  2.   

    spring配置文件如下<bean id="StaffBusiness" class="ssh.business.impl.StaffBusinessImp">
       <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <bean id="StaffBusinessDWR" class="ssh.DWR.StaffBusinessDWR">   
        <property name="StaffBusiness">   
          <ref bean="StaffBusiness" />   
        </property>   
      </bean>  
      

  3.   

    现在问题是dwr一结合spring(调用业务层方法),就会出错,跳出一个js提示Error,请问有人遇到过这种问题吗,有的话麻烦指点指点,这个问题已经困恼我两天了,万分感谢
      

  4.   

    配置了wb.xml<servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>
    org.directwebremoting.servlet.DwrServlet
    </servlet-class>
    <init-param>
    <param-name>debug</param-name>
    <param-value>true</param-value>
    </init-param>
    </servlet>
    <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
      

  5.   

    <listener>       <listener-class>           org.springframework.web.context.ContextLoaderListener       </listener-class>    </listener>     <context-param>       <param-name>contextConfigLocation</param-name>       <param-value>           /WEB-INF/classes/applicationContext.xml,/WEB-INF/classes/spring_car.xml       </param-value>    </context-param>
      

  6.   

    在业务逻辑层里用输出语句System.out.println("执行1");看看业务方法调用是否正确,传入的参数可正确,return的是什么,sql语句最好也打印出来,慢慢找,肯定会找到的
      

  7.   


    恩,我按你说的试过了
    public String isRegist(String username) {
    Set<String> users = new HashSet<String>();
    users.add("xiaoqiang");
    System.out.println("执行1"); this.getHibernateTemplate().find("from StaffValue"); System.out.println("执行2"); if(users.contains(username))
    {
    return "用户名已占用";
    }else
    {
    return "可用";
    }

    }
    它只执行到("执行1");
    到this.getHibernateTemplate().find("from StaffValue")就不执行了,可是我屏蔽了这句的话,下面的语句都会执行,this.getHibernateTemplate().find("from StaffValue")没有问题,我正常执行其他的业务层可以正常执行,只要用dwr调用了就会出错