EL any function to get absolute value of a number?

旧城冷巷雨未停 提交于 2019-12-17 17:05:10

问题


I know the ugly way

a>0 ? a : -a

but this is very annoyng when a is a relatively long expression.

OBJ1["x"]-someVar>0 ? OBJ1["x"]-someVar : -(OBJ1["x"]-someVar)

Is there any nicer way of doing it?


回答1:


For plain jsp, you can create a custom EL function which delegates to Math#abs(int).

If you first just create a /WEB-INF/functions.tld file which look like follows:

<?xml version="1.0" encoding="UTF-8" ?>
<taglib 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">

    <tlib-version>1.0</tlib-version>
    <short-name>Custom_Functions</short-name>
    <uri>http://example.com/functions</uri>

    <function>
        <name>abs</name>
        <function-class>java.lang.Math</function-class>
        <function-signature>int abs(int)</function-signature>
    </function>
</taglib>

Then you'll be able to use it as follows:

<%@taglib uri="http://example.com/functions" prefix="f" %>
...
${f:abs(OBJ1["x"]-someVar)}

This solution also works for JSF, but if you are using JSF, OmniFaces has simplified this for you by providing its importFunctions (if not already using OmniFaces with JSF, you should start using it)

<o:importFunctions type="java.lang.Math" var="m" />
...
#{m:abs(-10)}

See also:

  • Our EL wiki page


来源:https://stackoverflow.com/questions/13749001/el-any-function-to-get-absolute-value-of-a-number

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