在MySQL新增trigger時,出現如下錯誤訊息

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right

試了很久,發現CREATE TRIGGER指令的內容,不可以含Tab值,刪除後就好了。

DROP TRIGGER IF EXISTS FTStrategyInsert;

delimiter |

CREATE TRIGGER FTStrategyInsert AFTER INSERT ON FTStrategy
FOR EACH ROW
BEGIN
INSERT INTO FTStrategyLog
SET StryId = New.StryId,
StryName = New.StryName,
MktRiskAuth = New.MktRiskAuth,
TRoleId = New.TRoleId,
TAcctId = New.TAcctId,
StartDate = New.StartDate,
EndDate = New.EndDate,
Content = New.Content,
ModifyTime = New.ModifyTime,
ModifyEmp = New.ModifyEmp,
ModifyType = 'Insert';
END;
|

delimiter ;

select * from information_schema.triggers where trigger_name='FTStrategyInsert';

MySQL新增trigger失敗-ERROR 1064 (42000)

昨日使用full calendar套件時,在每日均加上checkbox做假日檔的設定,

並加上週六日直接預設為假日,在正常操作下均無誤,

但因為設定的假日檔有多種類型,當切換不同類型時設定週六日為假日竟然失效,

試了2、3小時找到原因,因為我在切換checked時是用

$(_cell).attr(‘checked’, true);

調為

$(_cell).prop(‘checked’, true);

就一切正常了!

jquery checkbox checked切換

請參考以下範例

1.enum宣告

package com.test.constants;
public enum PlatForm {
    PRIVADM {
          public String toString() {
              return "PRIVADM";
          }
      },
      WARRANTADM {
          public String toString() {
              return "WARRANTADM";
          }
      }
}

2.jsp struts2 tag使用

<struts:set name="MYPLATFORMID" value="@com.test.constants.PlatForm@PRIVADM"/>

Java enum如何於struts2 tag使用

1.下載套件
http://fullcalendar.io/download/

2.安裝套件
1) css : fullcalendar.css
2) js :fullcalendar.js

3.html tag

4.javascript設定

var myCalendar = {
   init : function() {
      var calendar = $('#calendar').fullCalendar({
         viewRender: function(view, element){
            myCalendar.getData();
         },
         header: {
            left: 'prev, today',
            center: 'title',
            right: 'next'
         },
         defaultView: 'month',
         selectable: true,
         selectHelper: true,
         eventRender: function (event, element, icon) {
            if (event.description != "") {
               element.attr('title', event.description);
            }
            element.css('cursor', 'pointer');
            element.css('background-color', '#FFB347');
            element.css('color', '#000000');
         },
         eventClick: function(calEvent, jsEvent, view) {
            document.location.href = "blog" + calEvent._id + ".action";
         },
      });
   },
   getData : function() {
      var curDate = $('#calendar').fullCalendar('getDate');
      var year = moment(curDate).format('YYYY');
      var mon = moment(curDate).format('MM');

      var formData = {year : year, mon : mon};
      $.ajax({
         url : 'waBloggetCalendar.action',
         type: "POST",
         data : formData,
         success : myCalendar.ajax_loaddata,
         error : function(xhr, statusText, error) {
            myMessageModal.popup("訊息通知","錯誤! 無法取得資料.");
         }
      });
   },
   ajax_loaddata : function(data) {
      $.each(data, function(index, item){
         if (index == "result") {
            if (item.success == false) {
               myMessageModal.popup("訊息通知",item.message);
            }
         } else if (index == "WABlogItemList"){
            var myseries = [];
            $.each(item, function(index2, item2) {
               myseries.push(item2);
            });
            $('#calendar').fullCalendar('removeEvents');
            $('#calendar').fullCalendar('addEventSource', myseries);
            $('#calendar').fullCalendar('rerenderEvents');
         }
      });
   }
}

5.javascript 初始化

$(document).ready(function() {
   $('#calendar').css('min-height', 400);
   $.getScript('assets/js/fullcalendar.js', myCalendar.init);
});

6.回傳之JSON資料如下
1.GIF
7.成果如下
1.GIF

如何使用full calendar套件做網頁日曆

1.下載library : commons-digester-rss.jar (http://www.java2s.com/Code/Jar/c/Downloadcommonsdigesterrssjar.htm)

2.import
import org.apache.commons.digester.rss.Channel;
import org.apache.commons.digester.rss.Item;

3.範例

SimpleDateFormat formatter= new SimpleDateFormat("dd MMM yyyy HH:mm:ss Z"); 
String today = formatter.format(new Date()); 
Channel newChannel = new Channel(); 
newChannel.setCopyright("© 2010 XXX Co., Ltd. All Rights Reserved.");
newChannel.setDescription("Grace's Blog"); newChannel.setLink("http://www.xxx.com/"); 
newChannel.setLanguage("zh-TW"); 
newChannel.setPubDate(today); 
for (tmpItem......) { 
      Item item = new Item(); 
      item.setTitle(tmpItem.getTitle()); 
      item.setLink(request.getScheme() + "://" + request.getServerName() +    request.getContextPath() + "/blog" + tmpItem.getBlogId() + ".action");
      item.setDescription(tmpItem.getSlogan()); 
      String pusDate = formatter.format(tmpItem.getModifyTime());
      newChannel.setPubDate(pusDate); newChannel.addItem(item); 
}

使用java產生rss xml檔案

1.連結至https://feedburner.google.com/fb/a/myfeeds用google帳戶登入

2.輸入rss連結,如https://myyhhuang.wordpress.com/feed/

1-2

3.click Next Button,可以得到一個連結,再加到網站上

4.步驟3的連結放到網站上,點選後會出現如下畫面,可讓網站使用者加入各RSS reader

2

Ex.http://feedly.com/其連結為feeds.feedburner.com

1

未來若網站改網址,其它使用者不需變動您的rss位置,只需至feedburner調整至新的網址即可

(My Feeds => Edit Feed Details => Original Feed => Save Feed Details)

1.GIF

使用Google FeedBurner

因SEO建議動態網址需調整成靜態網址(不使用?後帶參數),
如此搜尋引擎才會區分為不同頁面。

為了將struts2原本的http://localhost/myweb/Index.action?blogId=30,
調整為http://localhost/myweb/blog30.action
PS.其中30為blog的字串,會變動

於struts.xml加入以下設定於<struts>…</struts>內
2

並於原本的action name為Index_*下再新增action name為blog{blogId}的設定,
預期以下3連結均能使用:
1.http://localhost/myweb/blog30.action
2.http://localhost/myweb/Index.action
3.http://localhost/myweb/Index_getJson.action
13

但設定後http://localhost/myweb/Index_getJson.action卻無法mapping至正確的action,
仔細研究constant的struts.patternMatcher之設定regex、namedVariable均可以設定為靜態網址,
而action name : Index_對於mapping來說可能非變數,
看到網路有將*調整成{method},
經設定後變成http://localhost/myweb/Index.action無法使用;

再調整action name : Index{method},
則可正確使用http://localhost/myweb/Index.action,
而http://localhost/myweb/Index_getJson.action就調整為http://localhost/myweb/IndexgetJson.action即可。
設定如下:
4

struts2 : SEO建議動態網址需調整成靜態網址,如此搜尋引擎才會區分為不同頁面

發表於 程式分享

用7zip備份指定檔案清單

1.新增檔案backup.cmd
set backuppath=%cd%
set dd=%date:~8,2%
set dm=%date:~5,2%
set dy=%date:~0,4%
set mydate=%dy%%dm%%dd%

D:
cd D:\GWork\Source\workspace\warrantadm\WebContent
“C:\Program Files\7-Zip\7z.exe" a -ttar %backuppath%\warrantadm_%mydate%.tar @%backuppath%\listfile_warrantadm.txt

2.新增檔案清單 “listfile_warrantadm.txt"(放在backup.cmd同個目錄)
內容可能如下,為目錄D:\GWork\Source\workspace\warrantadm\WebContent下要備份的檔案
WEB-INF\applicationContext.xml
WEB-INF\web.xml
WEB-INF\classes\log4j2.xml
WEB-INF\classes\struts.properties
WEB-INF\classes\struts.xml
WEB-INF\classes\sysConfig.xml
mainPage.jsp
ajax\calendar.html

3.執行backup.cmd
會產生備份檔與.cmd檔同目錄,檔名依步驟1所取的名稱,如warrantadm_[yyyymmdd].tar