小编don*_*ior的帖子

在groovy中串联字符串时如何摆脱"null"?

我上课了

class A{
    String name
    String address
}

def a = new A()
a.address = "some address"    
println "${a.name} ${a.address}"  => "null some address"
Run Code Online (Sandbox Code Playgroud)

这里a.name是null,所以打印的字符串将包含"null",但我希望结果是"some address"忽略null值.

我知道我可以println "${a.name ?: ''} ${a.address ?: ''}"在打印时使用,有没有更简单的解决方案?

groovy

10
推荐指数
2
解决办法
8650
查看次数

如何将 servlet 映射到 /*,它因无限循环而失败并最终出现 StackOverflowError

我想将我的 servlet 映射到/*,但它因无限循环而失败。

<servlet>
    <servlet-name>helloServlet</servlet-name>
    <servlet-class>my.HelloServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>helloServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

Java代码是:

public class HelloServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response){
        request.getRequestDispatcher("/WEB-INF/jsps/hello.jsp").forward(request, response);
    }

}
Run Code Online (Sandbox Code Playgroud)

如果我映射到/hello,一切正常。

HelloServlet映射到 时/*,它也会被调用RequestDispatcher#forward()并导致无限循环。

这是怎么引起的,我该如何解决?

mapping servlets infinite-loop

3
推荐指数
1
解决办法
3368
查看次数

如何在Ruby中设置哈希实例的值?

我有两个A和B类,它们都有一些选项,通常我会用一个Hash来存储选项,比如@options[:name]='xxxx'; 现在我想用元编程重构它,

class A
    set_option :name, "james"
    set_option :address, "some street"

    def hello
        puts @options[:name]
        puts @options[:address]
    end
end


class B
    set_option :age, 18

    def greeting
        put @options[:age]
    end
end 
Run Code Online (Sandbox Code Playgroud)

这里我想用来set_option将键和值对设置为一个哈希实例@options,我该怎么办呢?

此外,我想将解决方案包装到一个单独的模块中.

更新:

首先,感谢你所有的答案对我都有价值,让我更清楚,现在我意识到我想要的东西不是那么正确,那么如果我提出这样的问题呢?

  • 怎么用一种方法option来代替@options
  • A类和B类都可以为同一个键设置不同的选项,所以可能有些答案' @@options不起作用?我希望不同的类可以有不同的哈希实例.

```像这样:

class A
    set_option :name, "james"
    set_option :provider, 'twitter'

    def hello
        puts option[:name]
    end
end


class B
    set_option :name, "not james"

    def greeting
        put option[:name]
    end
end 
Run Code Online (Sandbox Code Playgroud)

经过深思熟虑后,我认为我真正想要的是不同类的不同选项哈希实例,而不是类的实例.

这是我想要的,它可以工作.

module HasOptions
  def …
Run Code Online (Sandbox Code Playgroud)

ruby metaprogramming

2
推荐指数
1
解决办法
378
查看次数