Scott Zone
似水流年,勤勉無價
BlogJava
首頁
新隨筆
聯系
聚合
管理
posts - 27, comments - 14, trackbacks - 0
Liferay日志portlet里面的結構模板亂碼問題
在Liferay里面,有很多內置的示例portlet,這為我們在EXT環境下做二次開發新的portlet提供很好的參考依據,其中CMS模塊里的日志文章portlet,功能尤為強大,可以通過配置Structure和Template可以很容易實現一些新聞或是其他內容版面,寫好基本的Structure、Template *.XSL文件,可以通過擴展,再復雜的頁面都可以通過配置模板實現,這為發布新聞信息提供了非常方便的解決方案。下面我將自己在項目中遇到的幾個問題簡單記錄一下:(好記性敵不過爛筆頭啊,哈哈,再說我的記性本來就不好~~)
1、liferay4.3 final版本中新建結構、模板、文章過程中,編號似乎只能是自動生成,如果自己定義就報錯,不知道是不是我定義的編號不符合liferay的內部約束,沒仔細研究,這應該不是大問題,自動生成也沒什么不好。在以前的版本liferay4.2.2是可以自己定義編號的。
2、在定義結構時,最好直接通過發射編輯寫XSL文件的方式來實現,如果是自己通過點擊增加行的方式,需要自己定義屬性名,這些屬性名在后面定義模板的時候需要用到,而且應該保持一致,所以通過定義XSL文件保持原sample(以前的文章中有提供下載)中提供的那些基本結構,可以避免在定義模板時引起不必要的麻煩。
*3*、解決使用已經定義好的結構模板配置的文章出現亂碼的問題:
在liferay4.2.2中利用提供的結構和模板定義,配置多種結構的文章都沒出現任何亂碼的問題,但將原來的那些基礎模板應用到4.3版本中,就出現了亂碼的問題,剛開始很不解,結構和模板都是原系統中摘取下來的,不可能出錯的啊?后來通過對比才知道,老版本的模板.XSL文件頭部沒有包含任何字符編碼文件,例如:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:variable name="link_value">
<xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='textarea']/dynamic-content"/>
</xsl:variable>
<center>
<a border="0">
<xsl:attribute name="href">
<xsl:text>http://</xsl:text>
<xsl:value-of disable-output-escaping="yes" select="$link_value"/>
</xsl:attribute>
<img border="0">
<xsl:attribute name="src">
<xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='image']/dynamic-content"/>
</xsl:attribute>
</img>
</a>
</center>
<br/>
</xsl:template>
</xsl:stylesheet>
他是在系統運行過程中,自適應系統瀏覽器的字符編碼方式,所以在原來版本都是正常的,但新版本中,模板的.XSL文件是如下初始定義的:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:template match="/">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td>
<div style="float: right; position: relative; padding-left: 10px;">
<img>
<xsl:attribute name="src">
<xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='image']/dynamic-content"/>
</xsl:attribute>
</img>
</div>
<xsl:if test="root/dynamic-element[@name='textarea']/dynamic-content != ''">
<xsl:value-of disable-output-escaping="yes" select="root/dynamic-element[@name='textarea']/dynamic-content"/>
</xsl:if>
</td>
</tr>
<tr>
<td>
<br/>
</td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
它加入了
encoding="UTF-8"的聲明,問題就在這里,當系統瀏覽器的編碼方式與此不同時,亂碼當然也就出來了,嘗試去掉encoding="UTF-8"的包含,再刷新原文章,問題仍然存在。再返回該模板.XSL文件檢查代碼,又嘗試在
<xsl:output method="html" omit-xml-declaration="yes"/>加入encoding="gb2312",然后保存刷新,哇塞,亂碼不見了,問題得到解決。新的模板.XSL文件如下:
1
<?
xml version="1.0"
?>
2
3
<
xsl:stylesheet
xmlns:xsl
="http://www.w3.org/1999/XSL/Transform"
version
="1.0"
>
4
<
xsl:output
method
="html"
omit-xml-declaration
="yes"
encoding
="gb2312"
/>
5
<
xsl:template
match
="/"
>
6
<
table
cellpadding
="0"
cellspacing
="0"
border
="0"
width
="100%"
>
7
<
tr
>
8
<
td
>
9
<
div
style
="float: right; position: relative; padding-left: 10px;"
>
10
<
img
>
11
<
xsl:attribute
name
="src"
>
12
<
xsl:value-of
disable-output-escaping
="yes"
select
="root/dynamic-element[@name='image']/dynamic-content"
/>
13
</
xsl:attribute
>
14
</
img
>
15
</
div
>
16
<
xsl:if
test
="root/dynamic-element[@name='textarea']/dynamic-content != ''"
>
17
<
xsl:value-of
disable-output-escaping
="yes"
select
="root/dynamic-element[@name='textarea']/dynamic-content"
/>
18
</
xsl:if
>
19
</
td
>
20
</
tr
>
21
<
tr
>
22
<
td
>
23
<
br
/>
24
</
td
>
25
</
tr
>
26
</
table
>
27
</
xsl:template
>
28
</
xsl:stylesheet
>
由此問題引發思考:
在編碼過程中,幾乎所有的亂碼問題都是因為字符編碼的設置問題,所以在遇到有亂碼的情況下,首先要想到的就是檢查編碼方式的設置,是否國際化?這可能是解決亂碼問題的特定的解決思路。當然我們也由此發現encoding="UTF-8"也不是萬能的,還是要實際問題實際解決。
posted on 2007-07-13 11:19
Scott.Pan
閱讀(1089)
評論(0)
編輯
收藏
所屬分類:
Liferay
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
菜單式下拉列表
Liferay日志portlet里面的結構模板亂碼問題
Java Content Repository API 簡介
SearchContainer的用法說明
Portlet學習分析筆記
Liferay項目中問題及解決方法列舉
liferay中的結構模板介紹(liferay 4.2.2)
Copyright ©2025 Scott.Pan Powered By:
博客園
模板提供:
滬江博客
<
2007年7月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(4)
給我留言
查看公開留言
查看私人留言
隨筆分類
Database
IM例舉(1)
J2EE(2)
JBPM(1)
Liferay(7)
SSH(2)
Web開發
代碼收藏夾(7)
生活記事(6)
目錄服務(3)
隨筆檔案
2007年8月 (5)
2007年7月 (22)
搜索
最新評論
1.?re: Portlet學習分析筆記[未登錄]
來學習一下
--zz
2.?re: 幾種js實現的動態多文件上傳
最后一種不能用
--11
3.?re: insertAdjacentHTML方法示例[未登錄]
1
--1
4.?re: Portlet學習分析筆記
寫的很不錯。學習了
--chailieyang
5.?re: insertAdjacentHTML方法示例
評論內容較長,點擊標題查看
--啊打發
閱讀排行榜
1.?insertAdjacentHTML方法示例(23446)
2.?經典英語200句(4365)
3.?Portlet學習分析筆記(3621)
4.?SearchContainer的用法說明(2796)
5.?幾種js實現的動態多文件上傳(2772)
評論排行榜
1.?Portlet學習分析筆記(4)
2.?insertAdjacentHTML方法示例(2)
3.?幾種js實現的動態多文件上傳(1)
4.?經典英語200句(1)
5.?Liferay項目中問題及解決方法列舉(1)
主站蜘蛛池模板:
日韩精品人妻系列无码专区免费
|
日本zzzzwww大片免费
|
亚洲VA中文字幕不卡无码
|
114级毛片免费观看
|
亚洲国产精品网站在线播放
|
亚洲精品高清一二区久久
|
全部免费毛片在线播放
|
亚洲AV无码一区二区乱子仑
|
精品亚洲永久免费精品
|
青青草免费在线视频
|
一区二区在线视频免费观看
|
亚洲精彩视频在线观看
|
亚洲国产人成精品
|
91手机看片国产永久免费
|
黄色一级毛片免费
|
亚洲国产成人久久99精品
|
亚洲精品视频在线看
|
国产卡二卡三卡四卡免费网址
|
国产精品免费αv视频
|
亚洲精品456在线播放
|
亚洲AⅤ无码一区二区三区在线
|
女人张开腿等男人桶免费视频
|
XXX2高清在线观看免费视频
|
中文字幕亚洲情99在线
|
亚洲AV永久无码区成人网站
|
亚洲高清专区日韩精品
|
成人永久免费高清
|
久久99国产乱子伦精品免费
|
caoporm超免费公开视频
|
亚洲日产乱码一二三区别
|
久久久久亚洲AV无码网站
|
国产亚洲大尺度无码无码专线
|
成人黄动漫画免费网站视频
|
99热精品在线免费观看
|
中文字幕av免费专区
|
国产成人精品亚洲
|
亚洲一卡2卡3卡4卡国产网站
|
国产AV无码专区亚洲精品
|
亚洲中文字幕丝袜制服一区
|
手机看片久久国产免费
|
岛国av无码免费无禁网站
|