2011-05-03 116 views
1

我正在使用MVC模型,并试图在控制器中创建线程。当我在内部类run()我需要得到正确的模型,但它是抛出一个空指针。使用MVC中的线程从内部类调用外部类

这里是从外部控制器创建内部类和线程的代码:我试图得到正确的型号

Thread thread = new Thread(new runWithThread(OpsSec, AmToChange, AgentID, balance, currency, selected_account_obj)); 
thread.start(); 

的runWithThread内。 AMModel是模型类,撤回是其中的一种方法。 getModel在我正在扩展的抽象控制器(实现继承)中定义。

((AMModel)getModel()).withdraw(10, "USD"); 

它可以在外部类而不是在内部类,我不知道为什么我收到空指针与((AMModel)getModel())。任何帮助,将不胜感激。 谢谢

+0

模型是由某种容器注入的吗?如果是这种情况,那么你需要在内部类中声明它。否则,它根本不会存在于内部类中。 – 2011-05-03 03:39:39

+0

发布stacktrace,getModel()的代码和关联声明以及初始化代码。 – 2011-05-03 04:29:40

回答

1

我意识到错误。我在控制器外部类和runWithThread内部类中都“扩展了AbstractController”。我正在使用Rational Arch,它没有标记任何东西,所以我没有注意到这个错误。

0

我知道这是相当古老的,但尝试AMModel.this.withdraw(10, "USD");。这里有一个通用的例子:

class Outer 
{ 
    class Inner 
    { 
     public void test() 
     { 
      Outer.this.variable = 1; 
     } 
    } 
    public int variable = 0; 
    private Inner inner; 
} 

调用inner.test()后,variable1