公司有個功能需要 user輸入月份,長度強制兩位數,所以是 01, 02.....12
UI很簡單的用 parseInt(string)檢查輸入月份是否為介於 1-12之間的數字, server side會 format user input
功能一直沒問題,直到 8月開始... user送不出表單,頁面一直跳請輸入 1 ~ 12之間的數字
因為 0開頭的字串,parseInt視為 8進位 parse
"If the radix parameter is omitted, JavaScript assumes the following:
If the string begins with "0x", the radix is 16 (hexadecimal)
If the string begins with "0", the radix is 8 (octal). This feature is deprecated
If the string begins with any other value, the radix is 10 (decimal)"
.....摘自 W3Schools
意思是
0x開頭的字串,視為 16進位
0開頭的字串,視為 8進位(已棄用)--棄用歸棄用,user的 browser又不見得永遠是最新的
其他的都視為 10進位
01 - 07都是合法的 8進位,但是 08以 8進位來說不是正確的數字, parseInt return 0, bug於焉而生
加上 radix 10就 OK了
code_prettify
2016年10月12日 星期三
2016年6月30日 星期四
2016年2月17日 星期三
2016年1月30日 星期六
format all files in eclipse
Work under package explorer.
Right click on target(folder) > source > format
Right click on target(folder) > source > format
2016年1月13日 星期三
JSP custom tag attribute reused
依照 JSP spec, custom tag的 instance會被 pooled及 reused.
stack overflow
公司系統的 custom tag dbText沒有在適當的地方(doEndTag()) release掉所有屬性
造成其中一個用來可以取代 property做為 input name的 not required屬性 showName一旦使用過
會因為 tag handler instance pooled的關係
如果後續使用時沒指定 showName,就會一直沿用最後一次使用的值
衍伸出產生沒有 name屬性 input的 bug
stack overflow
公司系統的 custom tag dbText沒有在適當的地方(doEndTag()) release掉所有屬性
造成其中一個用來可以取代 property做為 input name的 not required屬性 showName一旦使用過
會因為 tag handler instance pooled的關係
如果後續使用時沒指定 showName,就會一直沿用最後一次使用的值
showName = showName == null ? property : null;
而且這段程式碼還位於不見得一定會被執行到的位置衍伸出產生沒有 name屬性 input的 bug
訂閱:
文章 (Atom)