主题:关于使用beetl的switch case语句执行无法输出问题咨询

mzwj 2019年06月27日 116

在使用beetl过程中(3.0.0.RELEASE),使用switch case进行判断输出,匹配条件为true但是并未输出;

代码如下:

   <!--# if(isNotEmpty(rcList)) {-->
            <!--# for(rc in rcList){  -->
        <tr>
            <td style="border-left:1px solid #ddd">
                <a id="name" onclick="goDetail('${rc.url}','${rc.name}','${rc.id}');">${rc.name}</a>
            </td>
            <td style="text-align: left;">
                ${(rc.period=="1")?"日":((rc.period=="2")?"月":((rc.period=="4")?"周":"日、月"))}
            </td>
                <!--#
                var b = rc.period;-->
            <script>console.log("rc.period:"+typeof (${rc.period})); console.log("b:"+typeof (${b}));console.log("5:"+typeof (5));</script>
            <!--# switch(b) {
               case 5:-->
                <td>88</td>
                    <!--# break;case 1:  print("it's 1");-->
                <td >日: ${rc.id}   <script>console.log("case1");</script></td>
                    <!--#break; case 2:  print("it's 2");-->
                <td>月: ${rc.id} <script>console.log("case2");</script></td>
                    <!--# break;case 3: print("it's 3");-->
                <td>日: ${rc.id} &nbsp;&nbsp;&nbsp;&nbsp;
                    月:${rc.id} <script>console.log("case3");</script></td>
                    <!--# break;case 4:-->
                    周: ${rc.id} <script>console.log("case4");</script></td>
                <!--#break; }  -->

         <td style="text-align: center" id="id${rc.id}">${rc.checkCount}</td>
         <td style="border-right:1px solid #ddd;text-align: center">
             <a href="javascript:void(0);"
                onclick="goDetail('${rc.url}','${rc.name}','${rc.id}');">点击查看</a>
         </td>
     </tr>
        <!--#  } }else{ -->
        <tr>
            <td colspan="99" class="wushuju">
                "noDataToDisplay"
             </td>
         </tr>
         <!--#}-->       

微信截图_20190627205629.png

1、从console的类型判断  rc.period是number类型,但是实际Java后台是String类型,不知为何在ibeetl中为number类型?

2、从console的结果看 rc.period和b都是number类型,case中也是muber类型,为啥case 1和2没有匹配上呢?我也尝试将case内容用{}包起来也不起作用?

感谢您百忙中解答。

闲大赋 2019年06月28日

用新版本吧,3.0.0有问题

1 ibeetl不会改变类型,你后台的肯定是number类型,你输出给js,让js判断,这逻辑说不通,你可以从后台判断,或者beetl的typeOf函数可以输出类型

2 case需要匹配,严格按照类型匹配,你最好知道类型是什么,比如1!="1",这个是常识,beetl遵循这个