读书人

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

发布时间: 2012-11-13 10:00:50 作者: rapoo

在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) */@Overrideprotected 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 的参数。这样就达到了:当没有指定参数时,默认取 树根节点 的目的。

读书人网 >软件架构设计

热点推荐