是否有可能重载(函数名) EL函数?请看下面的TLD片段:
相同的函数名rollDice
<function>
<name>rollIt</name>
<function-class>com.Person</function-class>
<function-signature>int rollDice()</function-signature>
</function>
<function>
<name>rollIt</name>
<function-class>com.Person</function-class>
<function-signature>int rollDice(int)</function-signature>
</function> 发布于 2013-08-29 03:19:56
不幸的是,EL函数不支持方法重载(也不支持varargs)。为每个函数指定不同的名称。
发布于 2015-07-31 07:19:40
您不能在TLD定义的函数中做到这一点,但您可以使用varags方法和/或重载方法将对象放在应用程序范围内(一次,在启动时),并使其正常工作。
您可以在servlet的init()方法中创建类的实例并将其放入应用程序(servlet)作用域中,而不是在TLD中定义它,如下所示:
MyDiceRoller roller = new MyDiceRoller();
ServletContext context = getServletContext();
context.setAttribute("roller", roller);然后,您将使用${roller.rollIt(6)},而不是${my:rollIt(6)}。而不是${my:rollIt()},你可以使用${roller.rollIt()}。
https://stackoverflow.com/questions/18496350
复制相似问题