自知其無(wú)知
          不懂,慢慢懂。
          posts - 2,comments - 2,trackbacks - 0

          以前頁(yè)面獲取結(jié)果,然后再用 jstl 等標(biāo)簽直接在頁(yè)面胡搗一翻,比如改變顯示日期的格式:
          <fmt:formatDate patter="yyyy-MM-dd" value="${comm.comm_create_time}" />
          但是現(xiàn)在用 Ajax 將結(jié)果返回了,頁(yè)面的這些格式該如何處理呢?(是在頁(yè)面處理數(shù)據(jù)格式呢?還是在 Controller 中直接格式化你要的字串,然后傳遞出來(lái),那么頁(yè)面僅僅負(fù)責(zé) innerHTML 或者 Dom 的 append ?)
          這個(gè)暫時(shí)不說(shuō)(過(guò)一會(huì)兒討論)。
          現(xiàn)在項(xiàng)目本來(lái)就沒(méi)有這個(gè)要求,所以自己的這一塊得因?yàn)?ajax 而硬吞下去,原本頁(yè)面的
          <fmt ... /> 在這里是不是可以用
          innerHTML = '<fmt:formatDate pattern="yyyy-MM-dd" value="${comm.comm_create_time}" /> ';
          這樣 innerHTML 到 jsp 頁(yè)面后,瀏覽器會(huì)怎么解析這一段呢?是不是將 <fmt:> 當(dāng)做文本字串呢?還是當(dāng)做正常的標(biāo)簽? 如果參照 innerHTML = '<b>hello world</b>' 會(huì)使標(biāo)簽 <b> 生效,也就是說(shuō)會(huì)將 innerHTML 中的標(biāo)簽進(jìn)行解析,那么 innerHTML = '<fmt: ... /> ' 也是可以被解析的?
          于是就這么進(jìn)行了嘗試:
          var div_comms = document.getElementById('comm');                      
                                 
          var str = "";
                                 
                                 
          for(var i=0;i<data_comms.length;i++){
                                        
                                       
          /*
                                         <div class="time">
                                           <fmt:formatDate pattern="yyyy-MM-dd" value="${comm.comm_create_time}" />
                                       </div>
                                        
          */

                                       
          var time = '<div class="time"><fmt:formatDate pattern="yyyy-MM-dd" value="' + data_comms[i].comm_create_time + '" /></div>';
                                     
          /*
                                      <h3 title="${comm.comm_user }">
                                           <y5k:substring length="12"
                                              text="${comm.comm_user }" append="" />
                                          :
                                      </h3><br/>              
                                      
          */
                                      
                                      
          var user = '<h3 title="' + data_comms[i].comm_user + '"><y5k:substring length="12" text="' + data_comms[i].comm_user + '" append="" />:</h3><br/>';                                 
                                      
          /*
                                         <h2>
                                          <y5k:substring length="18"
                                              text="${comm.comm_content }" append="" />
                                      </h2> 
                                       
          */
           
                                      
          var content = '<h2><y5k:substring length="18" text="' + data_comms[i].comm_user + '" append="" /> </h2>'; 
                                     
          /*
                                         <div class="hr_r"></div>     
                                      
          */

                                     
          var hr = '<div class="hr_r"></div>';                        
                                     alert(time);
                                      str 
          = str + (time + user + content + hr);
                                 }

                                 div_comms.innerHTMl 
          = str;

          利用 FF 進(jìn)行了查看,頁(yè)面從 div 的id 為 comm 的位置開(kāi)始,就一片空白了。。
          為什么?
          于是利用 FireBug 查看了 FF 的頁(yè)面的源碼,可以看到,我們 innerHTML 的東西其實(shí)都在頁(yè)面中,但是很奇怪的是,沒(méi)有顯示出來(lái)?為什么?這就可能是 HTML 標(biāo)簽的錯(cuò)誤的使用!!!就像你有 <title> 的開(kāi)始,但是沒(méi)有 </title > 結(jié)束標(biāo)簽一樣,你的頁(yè)面就會(huì)是空白。
          于是看了我 inner 的幾個(gè)標(biāo)簽?;腥淮笪?(恍然大霧) :
          var time = '<div class="time"><fmt:formatDate pattern="yyyy-MM-dd" value="' + data_comms[i].comm_create_time + '" /></div>';
          最后解釋的結(jié)果為:
          var time = '<div class="time"><fmt:formatDate pattern="yyyy-MM-dd" value="1229321538000" /></div>';
          也就是說(shuō) value= data_comms[i].comm_create_time 解釋的結(jié)果為 1229321538000
          我將 <div class="time"><fmt:formatDate pattern="yyyy-MM-dd" value="1229321538000" /></div>
          拷貝到 jsp 頁(yè)面單獨(dú)執(zhí)行,結(jié)果就是這一句以及這一句下面的語(yǔ)句在頁(yè)面上解釋不出來(lái)。
          于是我又試了
          <div class="time"><fmt:formatDate pattern="yyyy-MM-dd" value="2008-12-12  10:10:10.4" /></div>
          還是不行,只有查看 API 了。

          =============================================================

          <fmt:formatDate> 標(biāo)簽用于格式化日期。它的屬性和描述如表 9.23 所示:

          9.23   <fmt:formatDate> 標(biāo)簽屬性和說(shuō)明

          屬性

          描述

          value

          格式化的日期,該屬性的內(nèi)容應(yīng)該是 java.util.Date 類型的實(shí)例

          type

          格式化的類型

          pattern

          格式化模式

          var

          結(jié)果保存變量

          scope

          變量的作用范圍

          timeZone

          指定格式化日期的時(shí)區(qū)

          <fmt:formatDate> 標(biāo)簽與 <fmt:timeZone> 、 <fmt:setTimeZone> 兩組標(biāo)簽的關(guān)系密切。若沒(méi)有指定 timeZone屬性, 也可以通過(guò) <fmt:timeZone> 、 <fmt:setTimeZone> 兩組標(biāo)簽設(shè)定的時(shí)區(qū)來(lái)格式化最后的結(jié)果。


          =============================================================
           這里有兩個(gè)小細(xì)節(jié):
          1. 從 Contorller 傳遞過(guò)來(lái)的 Date 類型的值在 js 中進(jìn)行獲取的時(shí)候,會(huì)被自動(dòng)進(jìn)行 getTime() 而變?yōu)榛厝ズ撩霐?shù) 。比如這里的 data_comms[i].comm_creat_time 就被解釋為了類似 1229321538000 的結(jié)果。
          2. fmt:formatDate 的 value 一定要是一個(gè) java.util.Date 類型的參數(shù)。



          posted on 2008-12-15 14:42 CopyHoo 閱讀(556) 評(píng)論(0)  編輯  收藏 所屬分類: Ajax
          主站蜘蛛池模板: 肃宁县| 新营市| 河津市| 伊春市| 个旧市| 九龙县| 安康市| 高唐县| 县级市| 湟源县| 迁西县| 北流市| 竹溪县| 双牌县| 乐山市| 连州市| 建宁县| 平山县| 黄龙县| 乡城县| 凤台县| 甘谷县| 金乡县| 屏东县| 崇阳县| 阿鲁科尔沁旗| 潼南县| 右玉县| 康马县| 白山市| 凤翔县| 普兰店市| 筠连县| 桃园县| 渝北区| 崇州市| 久治县| 石屏县| 扶绥县| 冕宁县| 威远县|