在使用yui compressor時遇到編譯失敗的問題,可透過Google closure compiler:http://closure-compiler.appspot.com/home找到檔案為何無法正確編譯(但js與css能正常於網站執行),錯誤的問題不外乎是語法不嚴僅,如使用到保留字等等。
星期四, 8月 30, 2012
[Regex] 找出不包含特定字的結果 don't contain specified word
http://www.anydotcom.com/test/search.cfm?metric=blah&selector=size&value=1
http://www.anydotcom.com/test/search.cfm?metric=blah2&selector=style&value=1
http://www.anydotcom.com/test/search.cfm?metric=blah3&selector=size&value=1
http://www.anydotcom.com/test/details.cfm?metric=blah&selector=size&value=1
找出不包含details.cfm這個字的
(^((?!details.cfm).)*$)
Reference:
星期一, 8月 27, 2012
[jQuery Plugin] Textbox Mask
蠻屌的TEXTBOX Mask效果 XD
Reference:
http://digitalbush.com/projects/masked-input-plugin/#demo
Reference:
http://digitalbush.com/projects/masked-input-plugin/#demo
星期六, 8月 25, 2012
星期日, 8月 05, 2012
[Java] Jersey @DefaultValue
有時候你的參數是選項輸入的,即可使用 @DefaultValue
public String getOwnerQuoteList(
@PathParam(value="OWP_ID") String OWP_ID,
@DefaultValue("1") @QueryParam(value="page") int pageIndex,
@DefaultValue("10") @QueryParam(value="size") int pageSize,
@DefaultValue("dateline")@QueryParam(value="sort") String sort,
@DefaultValue("false") @QueryParam(value="asc") boolean asc) throws JSONException{
}
星期六, 8月 04, 2012
[jQuery] $.ajax 讀取影像
似乎不需要弄$.ajax也可以達到這個需求XD
Reference:
var img = $("#imgElem").attr('src', 'http://somedomain.com/image.jpg')
.load(function() {
if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
alert('broken image!');
} else {
$("#something").append(img);
}
});
Reference:
星期三, 8月 01, 2012
[Java] 快快樂樂使用 Jersey MVC 架構
先前利用jersey都只有在controller端直接將JSON物件轉成字串輸出,
jersey也提供MVC的方式來支援JSP來做template(View)
讓畫ui結構更直覺多了。
jersey也提供MVC的方式來支援JSP來做template(View)
讓畫ui結構更直覺多了。
星期二, 7月 31, 2012
[jQuery plugin] Pagination
分頁元件產生 :),採用的為以下這個jquery pagination
http://www.d-scribe.de/webtools/jquery-pagination/demo/demo_options.htm
範例:
其他的分頁
http://blog.ajaxmasters.com/jquery-pagination-plugin/
http://tympanus.net/codrops/2009/11/17/jpaginate-a-fancy-jquery-pagination-plugin/
http://www.d-scribe.de/webtools/jquery-pagination/demo/demo_options.htm
範例:
$("#pageContainer").pagination(
total,
{
items_per_page:PAGESIZE,
num_display_entries:10,
num_edge_entries:2,
link_to:"javascript:void(0)",
prev_text:"上一頁",
next_text:"下一頁",
callback:function(currentPage,container){
});
其他的分頁
http://blog.ajaxmasters.com/jquery-pagination-plugin/
http://tympanus.net/codrops/2009/11/17/jpaginate-a-fancy-jquery-pagination-plugin/
[Javascript] Validate E-mail
驗證信箱格式,讚的次數蠻高的,參考至這篇討論
Validate email address in Javascript?
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\
".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA
-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
其他驗證語法
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$
星期一, 7月 30, 2012
[Jersey] Client Post
Form post
Post JSON
需要注意在post json要這樣使用webResource.type(MediaType.APPLICATION_JSON).post(), 否則會回傳 415 Unsupported media type
MultivaluedMap formData = new MultivaluedMapImpl();
formData.add("name1", "val1");
formData.add("name2", "val2");
ClientResponse response = webResource.type("application/x-www-form-urlencoded").post(ClientResponse.class, formData);
Post JSON
需要注意在post json要這樣使用webResource.type(MediaType.APPLICATION_JSON).post(), 否則會回傳 415 Unsupported media type
public String isExist(
String parentUUID,
String objName,
String alf_ticket){
String response = null;
String apiURL = this.getEndpoint() + "/repo/object/check?ticket=" + alf_ticket;
this.client = Client.create();
//input body
JSONObject jsonBody = new JSONObject();
try {
jsonBody.put("parentUUID", parentUUID);
jsonBody.put("objName", objName);
} catch (JSONException e) {
System.out.println("[RepositoryObject] Fail to create json");
}
//create resource
this.webResource = this.client.resource(apiURL);
// this.webResource.type("application/json");
//do post
this.clientResp = webResource.type(MediaType.APPLICATION_JSON).post(
ClientResponse.class,jsonBody.toString());
//get string of response
response = this.clientResp.getEntity(String.class);
System.out.println("[RepositoryObject] status:" + this.clientResp.getStatus());
System.out.println("[RepositoryObject] response:" + response);
return response;
}
星期一, 7月 23, 2012
星期四, 7月 19, 2012
[jQuery plugin] $.address 快速連按上下頁按鈕
最近實作記錄讓ajax執行後能記錄行為到瀏覽器的上下頁按鈕,
因而選擇了$.address plugin。
原本運作上蠻正常的,不過在Firefox上面快速的連按上或下一頁按鈕時,會造成整個ui畫出來不對的現在。
因為firefox ajax request順序時間差不一致造成,因此在URL Change Event加入Queue即可解決。
$.address.externalChange(function(event){
// $.console("[address externalChange] event value:" + event.value);
var controller = event.pathNames[0];
var parameter = event.pathNames[1];
if(!isNullOrUndefiend(controller)){
// $.console("[address externalChange] Trigger currentFolder:" + currentFolder);
//2012/07/19
//When click back button quickly on firefox,
//must use queue to avoid duplicated data binding
$(this).queue(function(){
addressEventHandler(controller,parameter);
$(this).dequeue();
});
}else{
$.console("[address externalChange] Controller not found");
}
});
Tip:有時候外掛會無法取得externalChange event.value的值,目前還沒找出正確原因。目前直接用變更外部連結的方法處理。
window.location.href = "yourpage.jsp#ControllerName/ + "Parameters";
星期三, 7月 18, 2012
[jQuery API] 指定多重條件的selector (Multiple Attribute Selector)
有時候需要透過多個條件濾掉不需要的元素,
順便記錄一下,方便好查:)
用[]區開就好,以下範例是指綁定No equal的
Reference:
http://api.jquery.com/multiple-attribute-selector/
順便記錄一下,方便好查:)
用[]區開就好,以下範例是指綁定No equal的
$("#manage_title").find("div[class!=manage_avatar][class!=manage_action]").click(function(){
});
Reference:
http://api.jquery.com/multiple-attribute-selector/
星期日, 7月 15, 2012
[jQuery api] Stop ajax
如何停止執行中的ajax的request,在執行ajax呼叫後,會回傳一個instance,再透過abort即可停用。
var request = $.ajax({
type: 'POST',
url: 'someurl',
success: function(result){}
});
然後再把request abort即可request.abort();
[jQuery plugin] Validator 驗證多個Radio跟checkbox範例
今天遇到要檢查多個checkbox至少要選一下就順便記錄一下。
只要將你的checkbox內的name屬性設為 <你取的名字>[],
如下範例 candidate_usr[],記得要加上陣列的符號[]
Reference:
http://jquery.bassistance.de/validate/demo/radio-checkbox-select-demo.html
只要將你的checkbox內的name屬性設為 <你取的名字>[],
如下範例 candidate_usr[],記得要加上陣列的符號[]
$("#candidateForm").validate({
rules:{
'candidate_usr[]':{
required:true
}
},
messages:{
'candidate_usr[]':{
required: "請至少選擇一名委託者"
}
},
submitHandler: function(form) {
//get candicates
var $checkboxes
= $("#candidateForm").find("input:checkbox:checked").each(
function(i,cbObj){
var selectedExpertID = $(cbObj).val();
$.console("selected id:" + selectedExpertID);
});
}
});
Reference:
http://jquery.bassistance.de/validate/demo/radio-checkbox-select-demo.html
星期一, 7月 09, 2012
[JavaScript] 驗證物件為null或undefined
如果檢查物件是否為null或undefined
if(typeof(foo) !== 'undefined' && foo != null) {
//you can use foo!
}
星期一, 7月 02, 2012
[Alfresco] 實作alfreso javabacked 上傳心得 How to upload file using java backed web script
本文記錄使用Java API實作上傳的測試心得
上網找到的取得HttpServletRequest 都不適用於alfresco 3.4.5版本
// NOTE: This web script must be executed in a HTTP Servlet environment
// if (!(req instanceof WebScriptServletRequest)) {
// throw new WebScriptException(
// "Content retrieval must be executed in HTTP Servlet environment");
// }
// HttpServletRequest httpReq = ((WebScriptServletRequest)req).getHttpServletRequest();
發生錯誤如下: ClassCastException
用以下這段程式就能正常取得上傳檔案了,先前的中文問題出在client指定錯誤編碼了,繞了一大圈竟然是手誤呀!!
上網找到的取得HttpServletRequest 都不適用於alfresco 3.4.5版本
// NOTE: This web script must be executed in a HTTP Servlet environment
// if (!(req instanceof WebScriptServletRequest)) {
// throw new WebScriptException(
// "Content retrieval must be executed in HTTP Servlet environment");
// }
// HttpServletRequest httpReq = ((WebScriptServletRequest)req).getHttpServletRequest();
發生錯誤如下: ClassCastException
protected Map<string, object> executeImpl(
WebScriptRequest req,
Status status,
Cache cache) {
WrappingWebScriptRequest wrappingWebScriptRequest = (WrappingWebScriptRequest) req;
WebScriptRequest webScriptRequest = wrappingWebScriptRequest.getNext();
WebScriptServletRequest servletRequest = (WebScriptServletRequest) webScriptRequest;
FormField uploadFile = servletRequest.getFileField("file");
//file field
uploadFileName = uploadFile.getFilename();
uploadMIMEType = uploadFile.getMimetype();
uploadContent = uploadFile.getInputStream();
System.out.println("[form data] filename:" + uploadFileName);
System.out.println("[form data] mimetype:" + uploadMIMEType);
//do something
}
用以下這段程式就能正常取得上傳檔案了,先前的中文問題出在client指定錯誤編碼了,繞了一大圈竟然是手誤呀!!
//how to get WebScriptServletRequest WrappingWebScriptRequest wrappingWebScriptRequest = (WrappingWebScriptRequest) req; WebScriptRequest webScriptRequest = wrappingWebScriptRequest.getNext(); WebScriptServletRequest servletRequest = (WebScriptServletRequest) webScriptRequest; //get data form form FormData formData = (FormData)servletRequest.parseContent(); FormData.FormField[] formFields = formData.getFields(); int fieldsLen = formFields.length; for(int i=0;i如果要做更複雜的行為不在這篇的討論範例 :)
星期三, 6月 27, 2012
[Alfresco ] How to update content with ContentWriter class
此問題欲解決要利用ContentWriter變更Node的內容,
不是指新增版本的方式,目前尚未用到,待驗證 :)
ContentWriter contentWriter = contentService.getWriter(nodeCurrentLogFile, ContentModel.PROP_CONTENT, true);
contentWriter.setMimetype("text/plain");
FileChannel fileChannel = contentWriter.getFileChannel(false);
ByteBuffer bf = ByteBuffer.wrap(logLine.getBytes());
fileChannel.position(contentWriter.getSize());
fileChannel.write(bf);
fileChannel.force(false);
fileChannel.close();
星期一, 6月 25, 2012
[Alfresco] Java Foundation API
記錄一下Alfresco low level的java API學習資源 :)
Search Service
http://wiki.alfresco.com/wiki/Search#Search_Parameters
https://wiki.alfresco.com/wiki/Search_Documentation#Lucene_Language
How to exceed Lucene Limit Search?
Content repository services
Content repository services are the fundamental services for working with content in Alfresco. Content repository services are written in Java.
Content repository services are built on the storage and query engines. As with the engines, the same infrastructure is shared. The concept of users and groups is introduced into these services, such as recording the author of content, who has content locked or access to content. Implementation of the standards-defined services is packaged into the Alfresco content repository.- File Folders service
The File Folders service manages nodes for modeling files and folders in the repository. The service provides methods to create and update nodes and define the relationships between them. - Versioning service
The Versioning service manages versions of individual content nodes. To enable versioning behavior, you must apply the versionable aspect to the node. - Check Out / Check In service
Check Out and Check In services control updates to document and prevent unwanted overwrites. - Audit service
The Audit service provides a configurable record of actions and events. It collects information and stores it in a simple database form. - Authority service
The Authority service supports the creation and updating of users and groups. - Permission service
The Permission service supports methods relating to various permissions. - Person service
The Person service supports various methods relating to users. - Dictionary service
The Dictionary service supports methods to access and view content models and their definitions. - Search service
The Search service provides methods for querying the repository and returning a filtered collection of nodes based on a user’s permission.
Search Service
http://wiki.alfresco.com/wiki/Search#Search_Parameters
https://wiki.alfresco.com/wiki/Search_Documentation#Lucene_Language
How to exceed Lucene Limit Search?
[Java] Jersey Client
本文記錄如何使用Jersey client API
Reference:
https://blogs.oracle.com/enterprisetechtips/entry/consuming_restful_web_services_with
Reference:
https://blogs.oracle.com/enterprisetechtips/entry/consuming_restful_web_services_with
訂閱:
意見 (Atom)
