自定义EL表达式解析一个整数字段各BIT位为1时对应的汉字字符串

自定义EL表达式解析一个整数字段各BIT位为1时对应的汉字字符串

 

 

  1. 首先建一个java类ElFuncUtil,类中有静态方法,其功能为根据整数的值返回事先定义好的汉字告警信息字符串。

 

/**

    * EL方法判断一个整数的某位是否为10

    * @param str1

    * @param str2

    * @return

    */

   public static String appendWarn(String str1, String str2) {

         List<String> listWarn = new ArrayList<String>();

         listWarn.add("告警1 ");

         listWarn.add("告警2 ");

         listWarn.add("告警3 ");

         listWarn.add("告警4 ");

         listWarn.add("告警5 ");

         listWarn.add("告警6 ");

         listWarn.add("告警7 ");

         listWarn.add("告警8 ");

         listWarn.add("告警9 ");

         listWarn.add("告警10 ");

         listWarn.add("告警11 ");

         listWarn.add("告警12 ");

         listWarn.add("告警13 ");

         listWarn.add("告警14 ");

         listWarn.add("告警15 ");

         listWarn.add("告警16 ");

         listWarn.add("告警17 ");

         listWarn.add("告警18 ");

         listWarn.add("告警19 ");

         listWarn.add("告警20 ");  

         listWarn.add("告警21 ");

         listWarn.add("告警22 ");

         listWarn.add("告警23 ");

         listWarn.add("告警24 ");

         listWarn.add("告警25 ");

         listWarn.add("告警26 ");

         listWarn.add("告警27 ");

         listWarn.add("告警28 ");

         listWarn.add("告警29 ");

         listWarn.add("告警30 ");          

         listWarn.add("告警31 ");   

         listWarn.add("告警32 ");             

 

 

          String result = ""

           //整数

          int number = Integer.valueOf(str1).intValue();

          if (number <= 0)return result; //如果数字小于0      

          //指定某一位

          int nbit = Integer.valueOf(str2).intValue()-1;

 

          String binaryString = Integer.toBinaryString(number);

          int nLen = binaryString.getBytes().length -1;

          if (nbit > nLen) { return result;}

         

         //20转换后应该得到“0001 0100” 前面三个0没有,实际是“1 0100”,取的时候应该从最高为开始

          char ch = binaryString.charAt(nLen-nbit);

          if (ch =='1')

          {

             result = listWarn.get(nbit);

          }

         

         

         return result;

   }

 

 

 

2、接着写个tld文件elfunc.tld。

 

<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee [url]http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd[/url]"

   version="2.0">

   <tlib-version>1.0</tlib-version>

   <short-name>elf</short-name>

   <function>

      <description>返回某BIT代表的字符串</description>

      <name>appendWarn</name>

      <function-class>com.XXX.util.ELFuncUtil

      </function-class>

      <function-signature>java.lang.String appendWarn(java.lang.String,java.lang.String)</function-signature>

      <example>${elf:appendWarn(str1, str2)}</example>

   </function>

 

  

</taglib>

 

3、直接在jsp中使用我们自定义的el表达式了,在使用前别忘了在jsp中导入tld。

JSP页面显示代码:

<td class='center'>

       <c:forEach var="i" begin="1" end="32" step="1">                  

       <c:out value="${elf:appendWarn(var.ALARMDATA,i)}"/>

      </c:forEach>

</td>

备注:var.ALARMDATA是传入的32位整数。

 

 

 

 

发布了19 篇原创文章 · 获赞 6 · 访问量 1144

猜你喜欢

转载自blog.csdn.net/ydyuse/article/details/104406370