Play framework (2.3.5) - Template accessing an inner class fails

南楼画角 提交于 2019-12-11 02:33:57

问题


I have a class defined like so (pseudo code):

package com.some.namespace

public class SomeClass {

    protected SomeClass() {}

    // stuff...

    public class SomeInnerClass {

        public SomeInnerClass() {}

        // more stuff (accesses instance variables from SomeClass)...

    }

}

Then in my template I use the reusable block defines like so:

@doSomething(val: com.some.namespace.SomeClass.SomeInnerClass) = {

    // even more stuff...

}

But I get the error:

type SomeInnerClass is not a member of object com.some.namespace.SomeClass

Am I not able to access inner classes within the templates or is this supposed to work? (if it is supposed to work I might need to post my actual code)


回答1:


It should work, but because SomeInnerClass is a dependent type, i.e. dependent on your singleton outer class instance, you need to write it like:

@doSomething(value: com.some.namespace.SomeClass#SomeInnerClass) = {
    // even more stuff...
}

The SomeClass#SomeInnerClass syntax in Scala means, vaguely, a SomeInnerClass from any instance of SomeClass. See this answer for more detail.

If the inner class was static, however, your current SomeClass.SomeInnerClass syntax would be the way to go.



来源:https://stackoverflow.com/questions/28820161/play-framework-2-3-5-template-accessing-an-inner-class-fails

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!