檢查插件都在,更新,提交等操作都能正常使用,唯獨(dú)看不到狀態(tài)了。
經(jīng)過一番查找,找到問題解決辦法。
打開 : windows ->preferences->General->Appearance->Lable Decorations 勾選其中的 SVN 項(xiàng)即可。
同時(shí),還可以打開 windows ->preferences->Team -> SVN 中做相關(guān)設(shè)置。
之前看到很多人一直都問這個(gè)問題,不過當(dāng)時(shí)我沒當(dāng)一回事,因?yàn)樵?CSS 中要垂直居中,多數(shù)是在有高度的情況下,或者容器高度不定的情況下才用,看上去比較舒服,而且實(shí)現(xiàn)的方法也不少,不一定要拘泥于和 table 布局一樣。不過最近有人問了幾個(gè)例子,看來對此的需求還不少。現(xiàn)在就把我經(jīng)驗(yàn)?zāi)贸鰜矸窒硪幌拢M蠹夜墓恼啤?/p>
首先,要有一個(gè)概念:凡是 table 布局可以實(shí)現(xiàn)的,CSS 一定可以實(shí)現(xiàn)。CSS 可以實(shí)現(xiàn)的,table 未必能做到。
現(xiàn)在來幾個(gè)例子:
一、單行內(nèi)容的居中
只考慮單行是最簡單的,無論是否給容器固定高度,只要給容器設(shè)置 line-height 和 height,并使兩值相等,再加上 over-flow: hidden 就可以了
優(yōu)點(diǎn):
1. 同時(shí)支持塊級(jí)和內(nèi)聯(lián)極元素
2. 支持所有瀏覽器
缺點(diǎn):
1. 只能顯示一行
2. IE中不支持<img>等的居中
要注意的是:
1. 使用相對高度定義你的 height 和 line-height
2. 不想毀了你的布局的話,overflow: hidden 一定要
為什么?
請比較以下兩個(gè)例子:
上一個(gè)高度是用的絕對單位px,并且沒有隱藏溢出,下一個(gè)高度用的單位是相對單位em,并且隱藏了溢出。如果你的瀏覽器支持放大字體,那么盡情地放大字體,看看會(huì)出現(xiàn)什么效果。
二、多行內(nèi)容居中,且容器高度可變
也很簡單,給出一致的 padding-bottom 和 padding-top 就行
優(yōu)點(diǎn):
1. 同時(shí)支持塊級(jí)和內(nèi)聯(lián)極元素
2. 支持非文本內(nèi)容
3. 支持所有瀏覽器
缺點(diǎn):
容器不能固定高度
三、把容器當(dāng)作表格單元
CSS 提供一系列diplay屬性值,包括 display: table, display: table-row, display: table-cell 等,能把元素當(dāng)作表格單元來顯示。這是再加上 vertical-align: middle, 就和表格中的 valign="middle" 一樣了。
可惜IE不支持這些屬性,不過在其他瀏覽器上顯示效果非常完美。
要注意的是:和一個(gè)合法的<td>元素必須在<table>里一樣,display: table-cell 元素必須作為 display: table 的元素的子孫出現(xiàn)。
優(yōu)點(diǎn):
不用說了吧,就是表格,效果和表格一模一樣
缺點(diǎn):
IE下無效
四、以毒攻毒!用 IE 的 bug 解決 IE 中的絕對居中
先不得不說一句,IE 真的是個(gè)很爛的瀏覽器,CSS1中的定義都不支持,害得要我們轉(zhuǎn)個(gè)大圈子來造居中。不過就像我說的,凡是 table 布局可以實(shí)現(xiàn)的,CSS 一定可以實(shí)現(xiàn),即使在 IE 里也不例外。我研究 IE layout 模式多年,還是找出了一個(gè)可以在 IE 中絕對居中的方法。這個(gè)方法就是基于 IE layout 的 bug,也可以算以毒攻毒。至于原理,不要問我,這是獨(dú)門秘學(xué),何況三言兩語也講不清楚,只要好用就行
五、整合三和四,寫出支持所有瀏覽器的垂直居中容器!
思路是利用 IE 和 非IE 瀏覽器的 CSS hack, 整合三和四的CSS,寫出兼容主流瀏覽器的垂直居中容器。具體代碼就不給出了,大家權(quán)當(dāng)作練習(xí)練習(xí)。例子可以在下面的附錄中找到。
最終實(shí)測支持的瀏覽器:IE6+, Mozilla 1.7, Netscape Navigator 8, Opera 8.0+, Firefox 1.0+ 和 Safari 1.0+IE5 下需要加上對合適模型的補(bǔ)正。
推測支持的瀏覽器:Mozilla 1.5+, Netscape Navigator 7+, Opera 7+
未測試瀏覽器:Konqueror
最后附上自己寫的,所有居中布局的范例網(wǎng)頁,大家不明白可以參考。
現(xiàn)階段我們在開發(fā)報(bào)表的時(shí)候,是使用jdbc鏈接數(shù)據(jù)庫的,為提高報(bào)表的運(yùn)行效率和穩(wěn)定性,使用連接池進(jìn)行管理。比較簡便和低耦合的解決辦法,使用jndi連接池。
jdbc和jndi的區(qū)別
JDBC -最基本的連接數(shù)據(jù)庫的方式, 每次對數(shù)據(jù)庫打交道的時(shí)候 ,連接數(shù)據(jù)庫是需要實(shí)例下你實(shí)現(xiàn)連接數(shù)據(jù)庫的方法或者類。
JNDI DataSource 英文全稱是:Java Naming and Directory Interface java 命明接口,當(dāng)服務(wù)啟動(dòng)時(shí) 事先把連接數(shù)據(jù)庫的已經(jīng)連好多條,具體多少條你可以設(shè)置,存放在tomcat容器里,用的時(shí)候可以直接使用, 不用再實(shí)例化得到連接, 相對與jdbc效率要快點(diǎn)
在eclipse設(shè)計(jì)報(bào)表的時(shí)候,我們使用jdbc鏈接數(shù)據(jù)庫做測試,當(dāng)?shù)搅藅omcat運(yùn)行環(huán)境中切換到j(luò)ndi連接池,這是比較方便的開發(fā)方法。
實(shí)現(xiàn)步驟:
1.tomcat配置jndi連接池
在 {tomcat目錄}\webapps\{項(xiàng)目名}\META-INF 中新增context.xml文件,配置代碼如下
2.在web.xml中加入配置
3.實(shí)例報(bào)表中數(shù)據(jù)源代碼
除了第7行 <property name="odaJndiName">java:comp/env/jdbc/travel_agency</property>,其余是我們的之前的配置。用了第7行的代碼,表示該報(bào)表支持jndi數(shù)據(jù)源,birt在運(yùn)行報(bào)表的時(shí)候,會(huì)先用jndi去連接,如果失敗了再用jdbc鏈接,這樣做的好處就是,我們在開發(fā)報(bào)表的時(shí)候,沒有放到web環(huán)境中,可以使用jdbc,當(dāng)放到tomcat中,因?yàn)橛辛说?行的配置。默認(rèn)采用jdni連接。
從論壇的一篇文章(http://www.javaeye.com/topic/335078)得知,在BIRT VIEWER SERVLET內(nèi)部也有認(rèn)證接口代碼,只是簡單的返回了true,沒有做處理。BIRT VIEWER SERVLET是報(bào)表處理的入口,該接口如果返回flase,那么報(bào)表將不會(huì)顯示,目標(biāo)就是在該接口加入我們自己的邏輯實(shí)現(xiàn),本階段先實(shí)現(xiàn)簡單的安全認(rèn)證,即在沒有登錄的情況下無法訪問報(bào)表。
處理步驟:
1.把birt viewer項(xiàng)目和現(xiàn)有項(xiàng)目整合在一起(為了讓birt viewer項(xiàng)目能獲取到現(xiàn)有項(xiàng)目的session)
2.修改BIRT VIEWER SERVLET類,該類源碼在org.eclipse.birt.report.servlet.BirtEngineServlet下面,找到函數(shù)經(jīng)行修改,紅色為新增部分
/**
* Local authentication.
*
* @param request
* incoming http request
* @param response
* http response
* @return
*/
protected boolean __authenticate( HttpServletRequest request,
HttpServletResponse response )
{
//報(bào)表權(quán)限,沒有登錄訪問不了
if(request.getSession().getAttribute("user")==null)
{
return false;
}
return true;
}
3.將該類編譯后放進(jìn)BIRT包里面。