在springside 中关于null参数值的传递

我用 springside3 开发时,在我的程序了用到了 树 状结构。

 

我希望我的浏览器在不输入任何参数的情况下,输出根目录下的节点就可以了。我在数据库中,我的记录 根节点 的 父id 为 null。但按照现在 springside 3 的设计,暂时我还找怎么设置参数值为 null 的方法(如果我把 null 作为参数值传递给参数的话,会报异常:Error setting expression 'filter_EQL_parent.id' with value '[Ljava.lang.String;@186948'  / ognl.OgnlException: target is null for setProperty(null, "id", [Ljava.lang.String;@186948)。试了 google 找到的解决办法,1、在实体中添加无参构造函数;2、在 action 中添加一个 get/set 的方法;3、把实体的属性设置为 public ;都几种办法都无效)。

 

我现在的处理方法是,在 dao 层实现。在我的应用 dao 层,我覆盖了 hibernateDAO 中的一个方法,内容如下 :

 

public class CatalogDao extends HibernateDao<Catalog, Long> {

	/* (non-Javadoc)
	 * @see org.springside.modules.orm.hibernate.HibernateDao#findPage(org.springside.modules.orm.Page, java.util.List)
	 */
	@Override
	protected Criterion[] buildPropertyFilterCriterions(final List<PropertyFilter> filters){
		Criterion[] c = super.buildPropertyFilterCriterions(filters);
		if(c.length == 0){
			List<Criterion> list = new ArrayList<Criterion>();
			list.add(Restrictions.isNull("parent"));
			c = list.toArray(new Criterion[1]);
		}
		return c;
	}


}

 

这里的意思是,如果传入的参数个数为 0 个,则,我默认加上一个 parent=null 的参数。这样就达到了:当没有指定参数时,默认取 树根节点 的目的。

你可能感兴趣的:(DAO,C++,c,Hibernate,orm)