当只编码了一个参数时,jythonjava调用抛出请求2个参数的异常

2024-04-19 21:41:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在运行在tomcat5上的jythonservlet中调用一个Java方法。看起来像这样:

@SuppressWarnings("unchecked")
    public School loadByName(String name) {
        List<School> school;
        school = getHibernateTemplate().find("from " + getPersistentClass().getName() + " where name = ?", name);

        return uniqueResult(school);
    }

我在Jython中用以下方法调用它:

^{pr2}$

它抛出一个错误,它说loadByName()需要2个参数;得到1个。 它还能找什么别的理由呢?在

如果我尝试先创建一个实例,例如:

foo = com.dc.sports.dao.hibernate.SchoolDaoHibernate()
foo.loadByName('University')

第一个调用抛出一个异常:

No visible constructors for class (com.dc.sports.dao.hibernate.SchoolDaoHibernate)

我想这是因为这是一个私人包裹:

package com.dc.sports.dao.hibernate;

...

@SuppressWarnings("unchecked")
class SchoolDaoHibernate extends AbstractDaoHibernate<School> implements SchoolDao {

那么我怎么才能找到方法呢?在


Tags: 方法namecomfoodcclasssportsschool
2条回答

因为loadByName方法不是静态的,Jython可能希望第一个参数是SchoolDAOHibernate的实例。如果它对您的设计有意义,请将该方法设为静态的。在

loadByName不是静态的。 你需要一个实例来调用它。在

sdh = SchoolDAOHibernate(...) # ... any args for construction ??
sdh.loadByName('Univeristy') # 2 args :-) self (sdh) and 'University'

更清楚?在

相关问题 更多 >