Search

Bootstrap - 自動關閉popover

2015-06-30 1:29 PM

本次要介紹的是 Bootstrap 中的 popover 元件的客製化功能

若要在 popover 失焦時 也就是 onblur 觸發時自動淡出該如何使用呢?

在 Bootstrap 本身並沒有支援這項功能

而且 DIV 本身也不支援 blur 事件

所以我們要使用另外一種方式達成相同的效果

程式碼範例
  1. // Part 1: 初始化 popover 元件
  2. var button = template.find(".itemInfo button");
  3. // 加入 class name 以便下一步使用
  4. button.addClass("popover-toggle");
  5.  
  6. var content = $("
    test
    ");
  7.  
  8. button.popover({
  9. container:"body",
  10. content: content,
  11. html:true,
  12. placement:"top",
  13. title:"Popover title",
  14. trigger:'click'
  15. });
  16.  
  17. // Part 2: 加入 click 事件處理
  18. $(document).on("click", function(event){
  19. var target = $(event.target);
  20. $.each( $(".popover-toggle"), function(index, value){
  21. var _target = $(value);
  22. // 不是點擊按鈕或 popover 本身時關閉 popover 物件
  23. if( !target.is( _target ) && target.closest(".popover").length == 0 ){
  24. _target.popover("hide");
  25. }
  26. });
  27. });
各項資料連結
Bootstrap

Bootstrap - 修改 tooltip 樣式

2015-06-19 9:10 PM

Bootstrap 堪稱是工程師的一大福音

這是一款由 Twitter 發佈的 CSS Framework

可以讓網頁版面製作更加輕鬆與簡便

本次要介紹的是其中的客製化功能

若要使用其中的 tooltip 元件,卻又不想使用原生的顏色

例如背景顏色已經是暗色系了

使用原生的黑色 tooltip 根本就看不到

這時就可以使用以下方式修改 tooltip 的樣式

程式碼範例
  1. // 更改背景色及文字顏色
  2.  
  3. .tooltip > .tooltip-inner {background-color: #F7F7F7; color: #333333;}
  4. .tooltip.left .tooltip-arrow { border-left-color: #F7F7F7; }
  5. .tooltip.top .tooltip-arrow { border-top-color: #F7F7F7; }
  6. .tooltip.right .tooltip-arrow { border-right-color: #F7F7F7; }
  7. .tooltip.bottom .tooltip-arrow { border-bottom-color: #F7F7F7; }
  8.  
  9.  
  10. // 若僅要修改指定容器內的tooltip樣式 則使用以下方法
  11.  
  12. #map .tooltip > .tooltip-inner {background-color: #F7F7F7; color: #333333;}
  13. #map .tooltip.left .tooltip-arrow { border-left-color: #F7F7F7; }
  14. #map .tooltip.top .tooltip-arrow { border-top-color: #F7F7F7; }
  15. #map .tooltip.right .tooltip-arrow { border-right-color: #F7F7F7; }
  16. #map .tooltip.bottom .tooltip-arrow { border-bottom-color: #F7F7F7; }
  17.  
  18. // 並在初始化tooltip時將container設為#map
  19.  
  20. editBtn.tooltip({
  21. animation : true,
  22. placement : "top",
  23. html : false,
  24. title : "Edit hotspot",
  25. container : "#map"
  26. });
各項資料連結
Bootstrap

Java - Hibernate 與 log4j.properties 的設定

2015-06-10 3:44 PM

Hibernate 是一個在開發資料庫相關應用程式時的一個相當好用的 Framework

他會幫我們管理資料庫的連線, 資源的釋放, 物件的映射等等功能

可以說是族繁不及備載

這裡我們將介紹在使用 log4j 時

將如何設定以將 Hibernate 的相關資訊輸出

例如當我們想看 SQL 編寫的正不正確

或是帶入的變數有沒有問題

就可以使用這個方法查看

首先我們必須在 log4j.properties 內加入以下設定

若不清楚如何設定 log4j 可至本文章底部的各項資料連結查看教學

程式碼範例
  1. #hibernate log
  2. log4j.logger.org.hibernate=ERROR
  3. log4j.logger.org.hibernate.SQL=ERROR
  4. log4j.logger.org.hibernate.hql=ERROR
  5. log4j.logger.org.hibernate.type=ERROR
  6. log4j.logger.org.hibernate.type.BasicTypeRegistry=ERROR

一般來說

若正式上線皆會設定為 ERROR

避免輸出過多不必要的資訊

而在開發或 Debug 時則可將 Log 層級修改為 DEBUG 以查看相關訊息

若要查看 Hibernate 的相關訊息, 如啟動資訊, 各種錯誤訊息 則可修改此層級

  1. log4j.logger.org.hibernate=DEBUG

若要查看 Hibernate 的 SQL 或 HQL 是否正確 則可修改此層級

  1. log4j.logger.org.hibernate.SQL=DEBUG
  2. log4j.logger.org.hibernate.hql=DEBUG

若要查看 SQL 內帶入的變數值是否正確 則可修改此層級

  1. log4j.logger.org.hibernate.type=DEBUG

若要查看 SQL 內帶入的變數型態是否正確註冊 則可修改此層級

  1. log4j.logger.org.hibernate.type.BasicTypeRegistry=DEBUG
各項資料連結
Java - Tomcat + Spring 的 Log4j 部屬與設定
Java - log4j.properties 設定檔
Hibernate

Java - log4j.properties 設定檔

3:24 PM
在完成 Log4j 的部屬後首先要做的就是 log4j.properties 檔案的設定
這裡將解釋該如何設定 Log 的層級、格式以及輸出檔案的方法
程式碼範例
  1. #log4j.rootLogger = [ level ] , appenderName, appenderName, ...
  2. log4j.rootLogger = ERROR, console, rollingFile
  3. #level=DEBUG,all can be output
  4.  
  5. #apche log
  6. log4j.logger.org.apache.commons=ERROR
  7. #spring log
  8. log4j.logger.org.springframework=ERROR
  9. log4j.logger.com.opensymphony=ERROR
  10. #hibernate log
  11. log4j.logger.org.hibernate=ERROR
  12. log4j.logger.org.hibernate.SQL=DEBUG
  13. log4j.logger.org.hibernate.hql=DEBUG
  14. log4j.logger.org.hibernate.type=ERROR
  15. log4j.logger.org.hibernate.type.BasicTypeRegistry=ERROR
  16. #c3p0 log
  17. log4j.logger.com.mchange.v2.resourcepool.BasicResourcePool=ERROR
  18.  
  19. #others log
  20. log4j.logger.com.mchange=ERROR
  21.  
  22. #console is set to be a ConsoleAppender
  23. log4j.appender.console = org.apache.log4j.ConsoleAppender
  24. #console have four patterns
  25. #org.apache.log4j.HTMLLayout
  26. #org.apache.log4j.PatternLayout
  27. #org.apache.log4j.SimpleLayout
  28. #org.apache.log4j.TTCCLayout
  29. log4j.appender.console.layout = org.apache.log4j.PatternLayout
  30. #define the output type
  31. log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
  32.  
  33. #file is set to output to a extra file
  34. log4j.appender.rollingFile = org.apache.log4j.RollingFileAppender
  35. #the absolute route of the log4j file
  36. #log4j.appender.rollingFile.File = /log.txt
  37. log4j.appender.rollingFile.File = ${web.root}/WEB-INF/logs/webapp.log
  38. #the size
  39. log4j.appender.rollingFile.MaxFileSize = 500KB
  40. #back up a file
  41. log4j.appender.rollingFile.MaxBackupIndex = 50
  42. log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout
  43. log4j.appender.rollingFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n

Java - Tomcat + Spring 的 Log4j 部屬與設定

2:33 PM

Log4j 算是最容易上手且最被廣泛使用的 Log 套件

但很多人常常卡在不知道該如何正確的佈署相關的設定

這裡將使用 Tomcat + Spring 搭配 Log4j 的 Web 專案作為範例

千萬不要認為 Log 不重要就不去設定他

在正式上線後可是得靠這個小動作來發現問題所在

Log 的重點在精不在多 如何精準的輸出足夠的資訊作為 Log 可是非常重要的

但關於 Log 的輸出經驗談就下次再說吧

首先我們得先了解如何設定才能往下一步走

程式碼範例
  1. <!-- spring with log4j -->
  2. <!-- 交由spring取得根目錄路徑 做為變數使用 -->
  3. <!-- param-value的名稱不可與其他專案重複 -->
  4. <!-- 若 Web Container 底下有多個專案使用相同名稱將會導致錯誤 -->
  5. <context-param>
  6. <param-name>webAppRootKey</param-name>
  7. <param-value>web.root</param-value>
  8. </context-param>
  9.  
  10. <!-- log4j設定擋 -->
  11. <!-- 此處將告訴 Spring log4j.properties 設定檔位於 classpath 底下-->
  12. <!-- 也就是在 Maven 開發環境中的 res 目錄內 -->
  13. <!-- 若要置於 WEB-INF 底下則可以使用 /WEB-INF/log4j.properties 這樣的路徑設定 -->
  14. <context-param>
  15. <param-name>log4jConfigLocation</param-name>
  16. <param-value>classpath:log4j.properties</param-value>
  17. </context-param>
  18. <!-- 重新讀取 log4j 設定檔時間(毫秒) 可不用重新啟動 Tomcat -->
  19. <context-param>
  20. <param-name>log4jRefreshInterval</param-name>
  21. <param-value>1000</param-value>
  22. </context-param>
  23.  
  24. <!-- 使用 Spring 的 Log4jConfigListener 讀取 log4j 設定 -->
  25. <listener>
  26. <listener-class>
  27. org.springframework.web.util.Log4jConfigListener
  28. </listener-class>
  29. </listener>
  30. <!-- -->
各項資料連結
Spring
Apache Log4j 1.2.x
Apache Tomcat

Java - 使用 Joda time 取得指定時區

2015-06-04 10:53 AM

Joda Time 是一個相當方便的第三方套件

簡化了許多在使用原生 CalendarDate 物件時相當繁雜的步驟

本次要介紹的就是如何使用 Joda Time 套件取得特定時區的時間

程式碼範例
  1. //取得日本時區
  2. DateTimeZone gmt = DateTimeZone.forID( "Asia/Tokyo" );
  3.  
  4. //轉換為DateTime物件
  5. DateTime datetime = new DateTime(gmt);
  6.  
  7. //轉換為Java Date物件
  8. Date date = datetime.toLocalDateTime().toDate();

若是直接使用 datetime.toDate();

則會與直接使用 new Date(); 得到的日期相同

就不會使用指定時區的時間了

而會使用本機時間

這邊是需要稍微注意的地方

各項資料連結
Joda Time
Joda Time Available Time Zones
Calendar(Java Doc)
Date(Java Doc)