以下是JS代码----------------------------------
function js_loadCateogry(id)
{
dwr_updateCategory.loadCategory(id,loaded);
}
function loaded(isExits)
{
if(isExits!=null){
document.getElementById("upatename").value='${updateCategory.cname}';
document.getElementById("upatetype").value='${updateCategory.ctype}';
document.getElementById("upateintro").value='${updateCategory.cintro}';
}
}
--------------------------------------------------------------------------------
以下是方法,该方法是对的,我在Action中调用的话,能够得出我想要的值
public Category loadCategory(int cid) {
try {
return (Category)basicDAO.load(Category.class, cid);
} catch (Exception e) {
e.printStackTrace();
throw new AppException("载入收支类目失败!");
}
}在js中调用,id在loadCategory(int cid)中已经传递过去,但却return为null,出现空指针异常
请问怎么解决?对Ajax不是很懂
另外,怎么在js中得到返回的对象?

解决方案 »

  1.   

    Ajax直接用jQuery不是更简单么?传数据就用JSON就可以了.
      

  2.   

    不是呢,现在在学AJAX,所以...研究下,然后就出现问题了,
    很奇怪load(Category.class, cid)这两个参数都有值,但返回的却是空
    数据库里有这条记录的
      

  3.   

    (Category)basicDAO.load(Category.class, cid);
    感觉是load方法用的不对
    首先cid是实例Category的主键吗。如果是的话,没道理查不出来。如果不是的话你这么写肯定查不出结果
      

  4.   

    现在找到问题了,就是我是SSH+DWR,传都传过去了,现在出现了org.hibernate.LazyInitializationException: could not initialize proxy - no Session这个问题,
    网上的一解决方法,
      <filter-mapping>
            <filter-name>OpenSessionInViewFilter</filter-name>
            <url-pattern>/dwr/*</url-pattern>
      </filter-mapping>
    不过没效果~~
    -------------------------------------------------------------
    这是我dwr.xml中的配置
    <dwr>
    <allow>
    <create javascript="dwr_updateCategory" creator="spring">
    <param name="beanName" value="categoryManager" />
    <param name="location" value="classpath:applicationContext-*.xml" />
    <include method="loadCategory"/>
    </create>
    <convert match="com.financeMaster.domain.Category" converter="bean"></convert>
    </allow>
    </dwr>
      

  5.   

    --------------BasicDAO--------------
            //根据ID载入该对象
    public Object load(Class clazz,java.io.Serializable id);
    ------------BasicDAOImpl------------
            //根据ID载入该对象
    public Object load(Class clazz, Serializable id) {
    return getHibernateTemplate().load(clazz, id);
    }
    -----------CategoryManager------------
            //载入某一收支类目
    public Category loadCategory(int cid);
    ----------CategoryManagerImpl------------
            //载入某一收支类目
    public Category loadCategory(int cid) {
    try {
    return (Category)basicDAO.load(Category.class, cid);
    } catch (Exception e) {
    e.printStackTrace();
    throw new AppException("载入收支类目失败!");
    }
    }
      

  6.   

    不建议在Struts里搭配dwr,会冲突的,你还是换成Jquery比较好
      

  7.   

    return null么你没数据
    把hibernate配置的show_sql打开
    sql直接运行下就知道了 
      

  8.   

    现在是这个问题呢:org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    在5楼你看下,后代码贴在7楼
      

  9.   

    应该是延时加载引起的,你可以看一下Category的配置文件 是不是 在<class name="XX.Category" table="Category" lazy="true"> 中配置了延时加载,是的话改成false再测一下
      

  10.   

    应该是延时加载引起的,你可以看一下Category的配置文件 是不是 在<class name="XX.Category" table="Category" lazy="true"> 中配置了延时加载.
    或者在web.xml中配置spring的OpenSessionInViewFilter过滤器,也能解决。