小编kar*_*s7e的帖子

是否可以使用Java Reflection创建嵌套类的实例?

代码示例:

public class Foo
{
    public class Bar
    {
         public void printMesg(String body)
         {
             System.out.println(body);
         }
    }
    public static void main(String[] args)
    {
         // Creating new instance of 'Bar' using Class.forname - how?
    }        
}
Run Code Online (Sandbox Code Playgroud)

是否可以创建类Bar的新实例给它的名字?我试着用:

Class c = Class.forName("Foo$Bar")
Run Code Online (Sandbox Code Playgroud)

它找到了类,但是当我使用c.newInstance()时它会抛出InstantiationException.

java reflection inner-classes

34
推荐指数
3
解决办法
4万
查看次数

嵌套的Gorilla Mux路由器不起作用

使用下面的代码,当我访问/ test2时,它以404响应 - 未找到./ test1正常工作.这是为什么?尽管路由器实现了http.Handler接口,但是不允许嵌套吗?

package main

import (
    "fmt"
    "net/http"
    "github.com/gorilla/mux"
)

func main() {

    mainRouter := mux.NewRouter()
    subRouter := mux.NewRouter()

    mainRouter.HandleFunc("/test1", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "test1") })

    subRouter.HandleFunc("/test2", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "test2") })

    mainRouter.Handle("/", subRouter)

    http.ListenAndServe(":9999", mainRouter)
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我的主要目标是添加一些初始工作,这些工作对于subRouter中的所有路由都是常见的,并且仅适用于它们.更具体地说,我想使用Negroni作为我的中间件orchiestrator.在Negroni网站上有一个将中间件添加到路由组的示例:

router := mux.NewRouter()
adminRoutes := mux.NewRouter()
// add admin routes here

Create a new negroni for the admin middleware
router.Handle("/admin", negroni.New(
  Middleware1, 
  Middleware2, 
  negroni.Wrap(adminRoutes),
)) 
Run Code Online (Sandbox Code Playgroud)

Negroni基本上执行每个参数的ServeHTTP方法,因为它们都实现了http.Handler.它按顺序执行它们,因此路由器路由将是最后的.

我熟悉SubrouterMux中的概念,但AFAIK我不能像上面的例子那样使用它,特别是我不能在mainRouter和它之间注入任何东西Subrouter.这就是嵌套看起来更灵活的原因.

go mux gorilla

6
推荐指数
3
解决办法
6641
查看次数

使用可与Symfony 2形式一起翻译的学说

我在我的应用程序中有实体,它有2个可翻译的字段,使用Doctrine Translatable Extension:

class Page implements Translatable
{
    /......

    /**
     * @var string $name
     * @Gedmo\Translatable
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;

    /**
     * @var text $content
     * @Gedmo\Translatable  
     * @ORM\Column(name="content", type="text")
     */
    private $content; 

 /........
}
Run Code Online (Sandbox Code Playgroud)

我使用一个表进行多个实体翻译.现在我想使用一个表单来获取这些属性的原始和翻译(到1种语言)值,因此它应该有4个字段.

我已经定义了从AbstractType派生的新表单,并尝试使用FormBuilder添加这两个字段,但它表示它们对应的实体不包含这些字段.我试图将这些字段添加到实体,并为它们声明getter,但我知道获得实体翻译的唯一方法是使用专用实体管理器和AFAIK提供实体管理器访问实体不是好习惯.

有没有办法使用表单来处理这样的事情?

symfony doctrine-orm

5
推荐指数
1
解决办法
1404
查看次数

标签 统计

doctrine-orm ×1

go ×1

gorilla ×1

inner-classes ×1

java ×1

mux ×1

reflection ×1

symfony ×1