首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >language:类“java.lang.Class”上的未知属性“language”

language:类“java.lang.Class”上的未知属性“language”
EN

Stack Overflow用户
提问于 2012-06-06 00:47:49
回答 3查看 4.2K关注 0票数 0

我得到了以下错误:

代码语言:javascript
复制
java.lang.NoSuchMethodException: Unknown property 'language' on class 'class java.lang.Class'

使用的Rest调用: /Test/rest/Languages/insertobj/Japanese/Swedish%206

我正在使用: org.apache.commons.beanutils.PropertyUtils;

我确实在我的Languages类中有指定的属性'language‘,所以我不确定为什么它会抛出这个错误。当我这样声明它时,它就可以工作了:

Languages lanobj = new Lanaguages();

//Languages类

代码语言:javascript
复制
public class Languages implements java.io.Serializable {
    private String language;
    private String displayName;

public Languages() {
        this.language = null;
        this.displayName = null;
    }


public Languages(String language, String displayName) {
    this.language = language;
    this.displayName = displayName;
}

public void setLanguageId(Long languageId) {
    this.languageId = languageId;
}

@Column(name = "language", nullable = false, length = 50)
public String getLanguage() {
    return this.language;
}

public void setLanguage(String language) {
    this.language = language;
}

@Column(name = "displayName", nullable = false, length = 50)
public String getDisplayName() {
    return this.displayName;
}

public void setDisplayName(String displayName) {
    this.displayName = displayName;
}

}

/资源管理器代码

代码语言:javascript
复制
@Path("{subResources}/insertobj/{language-id}/{displayname-id}")
//@POST 
@GET // Using get for the sake of making rest call with browser
@Produces(MediaType.TEXT_HTML)
public String getLanguageById(@PathParam("subResources") String id,
                            @PathParam("language-id") String language_id,
                            @PathParam("displayname-id") String displayname_id) 
{
    try{
        Class<?> c = Class.forName("com.test."+id);
        PropertyUtils.setProperty(c, "language",language_id);
        PropertyUtils.setProperty(c, "displayName",displayname_id);
        TransactionManager.createObject(c);     

    }catch (Exception exc){
        exc.printStackTrace();      
    }

}

//TransactionManager代码片段:

代码语言:javascript
复制
public static void createObject(Object entityObject) {
    Transaction tx = null;
    //SessionFactoryUtil.getInstance().openSession();
    Session session =  SessionFactoryUtil.openSession();
    try {
      tx = session.beginTransaction();        
      session.save(entityObject);         
      tx.commit();
    } 
    catch (RuntimeException e)
    {
      if (tx != null && tx.isActive())
      {
        try 
        {
            // Second try catch as the rollback could fail as well
            tx.rollback();
        } 
        catch (HibernateException e1) {
            //logger.debug(“Error rolling back transaction”);
        }
        // throw again the first exception
        throw e;
      }
    }
    finally
    {
        session.close();
    }
  }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-06 01:05:01

setProperty需要一个实例,而您传递的是类,请参见documentation

代码语言:javascript
复制
Class<?> c = Class.forName("com.test."+id);
Language language = (Language)c.newInstance();
PropertyUtils.setProperty(language , "language",language_id);

要么特定地强制转换为Language,要么就将其保留为Object

代码语言:javascript
复制
Object object  = Class.forName("com.test."+id).newInstance();
PropertyUtils.setProperty(object, "language",language_id);
票数 1
EN

Stack Overflow用户

发布于 2012-06-06 01:03:27

您正尝试在"com.test."+id的类对象上设置属性language。你需要创建一个这个类的实例来设置值。类似于:

代码语言:javascript
复制
try{
    Class<?> c = Class.forName("com.test."+id);
    Object o = c.newInstance();
    PropertyUtils.setProperty(o, "language",language_id);
    PropertyUtils.setProperty(o, "displayName",displayname_id);
    TransactionManager.createObject(o);     

}catch (Exception exc){
    exc.printStackTrace();      
}

c引用的类必须具有零参数构造函数,此代码才能工作。

票数 5
EN

Stack Overflow用户

发布于 2012-06-06 00:52:41

因为您的类Languages没有定义默认的构造函数,所以beanutils无法执行reflection.make,确保您的类中定义了默认的构造函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10901413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档