===========================================================
version 3.1
===========================================================

1. ANṼpXjspn܂pXw肷ƃZbV쐬Ă܂
悤ȌۂoB()
2. BeanToXmlDocumentABeanToJsonDocumentPOJOċAIɉ͂鏈ǉ
3. Log̓t[eCgŃNXǉ
4. XMLHttpObjectresXml擾łȂ
LayoutFilterɂXMLX|XContentType㏑Ă܂ۂC

+------------------------------------------------------------------------------+
ȂMɊւĂAXMLHttpRequestIuWFNgł̂́AUTF-8ɌB
̂ߓ{ꂪ܂܂Ă̂ł΁AUTF-8ɕϊKvB
Content-Typetext/xmlɐݒ肵YƁANCAg̃XNvgł́A
responseXMLvpeB̖߂lƂDocumentIuWFNg擾łȂƂoĂB
+------------------------------------------------------------------------------+

5. Validatio@\ǉ
NGXgp[^̓̓`FbNweber-config.xmlɎw\B
ŗL̓̓`FbN͏]ǂAAction.doValidate()Ɏ

6. GET\bhp̒ӓ_
setCharacterEncoding\bh̗pɂ1_ӂׂ_́AtH[̃f[^M
GET\bhpƂ̐U镑WebRei̎ˑł邱ƂB
ႦΈȉ̂悤JSPy[WlĂ݂悤B

<%@ page language="java" contentType="text/html;
 charset=Windows-31J" %>

<html>
<head><title>eXg</title></head>
<body>

<form action="test.jsp" method="GET">
  <input type="textbox" name="msg">
  <input type="submit" value="Send">
</form>

<%
    request.setCharacterEncoding("Windows-31J");
    out.print(request.getParameter("msg"));
%>

</body>
</html> 

@JSPy[WŒӂĂ_́AtH[̑M\bhƂGET
w肵Ă_B
@ătH[̃p[^́AHTTPNGXgE{fBł͂ȂAURĨNG
ʂăT[ubgEReiɑMB

Tomcat 4.1.31̏ꍇALR[h͖Ȃ{ƂłB
Tomcat 4.1.31ł͖Ȃ{ꂪ\ 

ATomcat 5.0.28ł́AƂ܂JSPy[WŁAp[^̕
Ă܂B
Tomcat 5.xłGETɂMp[^ɑ΂āAsetCharacterEncoding
\bh̕R[huKpȂvƂdlύXȂĂ̂łB

Tomcat 5.xɂĂ̖ɂ́ARei̐ݒt@C
server.xmlConnectorvfɂāAuseBodyEncodingForURI
ȉ̂悤Ɏw肷΂悢B

<Connector 
port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" 
disableUploadTimeout="true" useBodyEncodingForURI="true"/>  

WebuEȖ́AWeby[WƓR[hŃNG쐬A
ɑ΂URLGR[fBOi%xx`j{WebT[oɑMB
A

7.GET̕Ή2
Tomcat 5.xɂdlύX́Ã[D悵̂Ȃ̂ł
iȂ݂ɁAN4GoogleɂNG̃ftHgR[h
UTF-8ɕύXA̃^uuEUŕ̂A
Ɠl̎ɂ̂jB

Tomcat5.xAFORMGET\bhŃp[^𑗐MꍇA
setCharacterEncoding\bh𖳎悤ɂȂ܂B
POST\bh̏ꍇ͗LłB 
GET\bh̏ꍇAserver.xmlt@C<connector>^OuseBodyEncodingForURI
trueɎw肷邱ƂŁAsetCharacterEncoding\bhLɂł܂B  
 <Connector port="8080" maxThreads="150"
           minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" redirectPort="8443"
           acceptCount="100" debug="0" 
           connectionTimeout="20000" disableUploadTimeout="true"
           useBodyEncodingForURI="true" />
8. WeberTestCasepP̃eXgNXs
MockGeneralFormNXHttpServletRequestNXClassNotFoundException
oĂ܂ۂC

9. WeberTestCasepP̃eXgNXs
ActionBucketNXHttpServletRequestNXClassNotFoundException
oĂ܂ۂC
(1) ActionBucketNXC^[tF[XɕύX
(2) ActionBucketNXActionBucketImplNXɕύX

===========================================================
version 3.1.1
===========================================================
1. X^bNƃ[XɂāiUnknow Source)o錻ۂC
>javacȂ
>javac -g ]X
>
>antȂ
>debug="on" optimize="off"

ȂقǁBB
ǂAUnknown SourceɂȂȁAƎvĂ̂łAANT
ftHgdebug="off"ɂȂĂ܂ˁB

2. `FbN{bNX̕`FbÑoO(fO)C
3. XHTML^ÕJX^^O`s悤ɂ
iJ_[\Tvǉj

===========================================================
version 3.1.2
===========================================================
1. HtmlWriteTagConverterǉ

===========================================================
version 3.1.3
===========================================================
1. `t@C̒``Ƀ\[gĕێ悤
C

===========================================================
version 4.0 b1
===========================================================
1. tH[h̕ύX
1-1. F؃G[RoleExceptionX[悤ύX
iglobal-exceptionŔF؃G[̑JڐURLw肷
ɕύX)
1-2  F̖ؐ߂lύX
iύXO)org.itscool.weber.action.ROLE_SUCCESS
iύX)success
1-3 ̓G[̖߂lύX
iύXO)org.itscool.weber.action.INPUT_ERROR
iύX)error

3. org.itscool.commons.connection.ConnectionMangerC^[tF[X
org.itscool.weber.user.RoleManagerC^[tF[XisInit\bh
ǉ

4. org.itscool.weber.action.Action.doValidate()̖߂l
voidStringɕύX

5. org.itscool.stylist.controller.HtmlServlet
xhtmlt@C̃wb_<?xml version="1.0" encoding="Shift_JIS" ?>Lq
ꍇ̓ftHg<?xml version="1.0" encoding="Shift_JIS" ?>t
悤ɏCiGR[h͒`t@C擾)

6. NXύX
org.itscool.weber.user.UserRoleDao->org.itscool.weber.user.RoleDao
org.itscool.commons.dao.DaoInfo->org.itscool.commons.dao.EntityInfo
org.itscool.commons.dao.DaoInfoMapping->org.itscool..commons.dao.EntityInfoMapping
org.itscool.weber.user.RoleManger->org.itscool.weber.user.UserManger
org.itscool.weber.user.RoleDbManger->org.itscool.weber.user.UserEntityManger
org.itscool.weber.user.UserRole->org.itscool.weber.user.Role

8. NXړ
org.itscool.stylist.filter.*->org.itscool.stylist.controller.*
org.itscool.weber.action.FrontServlet->org.itscool.weber.controller.FrontServlet
org.itscool.weber.action.Globals->org.itscool.weber.controller.Globals
org.itscool.commons.bean.InitParamMap->org.itscool.commons.collection.InitParamMap

9. NXp~
org.itscool.weber.user.RoleFileManager
org.itscool.weber.user.CreateUser
org.itscool.weber.user.UserUtil
org.itscool.weber.user.CreateUser
org.itscool.weber.tagexpbP[Wiweber-tag.tldyweb.xmlJX^^O`폜)

10. NXǉ
org.itscool.weber.controller.FrontServlet4x
org.itscool.weber.controller.RequestDispatcher
org.itscool.weber.controller.RequestDispatchException
org.itscool.weber.mapping.RequestMappings

11. [UNXANX̃}bsOe[uύX
WEBER_USER -> USERe[u
WEBER_ROLE -> USER_ROLEe[u
WEBER_AUTONUMBER -> AUTO_NUMBERe[u

12. org.itscoo.commons.daopbP[W
DATETIME,TIMESTAMP^Ή

13. yϓIbNiLOCK_VERSION)AŏIXViUPDATE_DT)Zbg@\ǉ
e[ũtB[hLOCK_VERSION()ǉ邱ƂŁAyϓIbNs
e[ũtB[hUPDATE_DTiDATETIME/TIMESTAMP)ǉ邱ƂŁA
ŏIXVŃZbg܂

14. ŏIXV̎Zbgǉ
e[ũtB[hUPDATE_DT݂ꍇAINSERT/UPDATE
VXetZbg(tB[h^CvDATETIME/TIMESTAMP)

15. _폜@\
DELETE_FG(^)Ř_폜s
DELETE_DT(DATETIME/TIMESTAMP)݂ꍇ͘_폜̓tZbg

99. oOC
(1) org.itscool.stylist.io.HtmlWriteTagConverter.convert()
NullPointerExceptionC
(2) org.itscool.stylist.tag.LayoutRegex.parseObj()
NullPointerExceptionC
(3) org.itscool.commons.connection.JdbcConnectionManager,DataSourceConnectionManager
getTransaction()AreleaseTransaction()Ainit()Adestroy()synchronizedubN
ǉ

===========================================================
version 4.0 b2 / b3 
===========================================================

99. oOC
(1) org.itscool.commons.dao.FieldMap
tŎ24Hŏo͂悤C
(2) org.itscool.stylist.controller.HtmlLayoutServlet4_xǉ
CAEgKx[Xō쐬@\ǉ
(3) org.itscool.commons.util.URLDecodeUtilNXfilter\bh
u"(_uNH[e[V)v̕ϊ@ɌC
(4) FireFoxŃt@C]łȂۂC


===========================================================
version 4.0 b4
===========================================================
1. EL֐ΉyуJX^EL֐@\ǉ
2. org.itscool.weber.user.UserEntityManagerNX̃[Uo^n
̃\bh񐄏ɕύX

99. oOC
(1) org.itscool.layout.controller.HtmlLayoutServlet4_x
̃CAEgƕpƁAFileNotExceptiono錻ۂC
(2) ÍꂽpX[hɂ郆[UF؂Ɏs錻ۂC
(3) XHTML̃p[XG[T[ubgɕԂ悤ɏC
(4) lock_versionNull̂ƂAXVłȂۂC

===========================================================
version 4.0
===========================================================
(1) EL֐ǉ
(2) oCi^̃tB[he[uɑ΂SQL͌_ŕs
(3) org.itscool.commons.BeanUtilsetPropertyAgetProperty\bh
z񃁃oΉǉ
(4) org.itscool.weber.testcase.WeberTestCaseC

 TransactionCX^X̏PreparedStatementɒuKvB
1: connection.setAutoCommit(false);
2:  
3: String sql="insert into product_photo values(?,?)";
4: PreparedStatement statement=connection.prepareStatement(sql);
5:   
6: statement.setInt(1,104);
7: File file=new File("/tmp/myphoto.jpg");
8: FileInputStream input=new FileInputStream(file);
9: statement.setBinaryStream(2,input,(int)file.length());
10:statement.executeUpdate();
11:connection.commit();

===========================================================
version 4.0.1
===========================================================
(1) InitParam̏icreateInstance())init\bhȊOŌĂяoĂ
ӏgetInstanceɏC

org.itscool.stylist.controller.HtmlLayoutServlet
org.itscool.stylist.controller.HtmlLayoutServlet4_x
org.itscool.weber.controller.FrontServlet
org.itscool.weber.controller.FrontServlet4_x
org.itscool.weber.controller.ActionBucketImpl
org.itscool.stylist.io.HtmlAttributeConverter
org.itscool.stylist.io.HtmlTextConverter

(2) ActiondoValidateɂRET_NOFORWARDԂꍇ́A
G[ʂɑJڂȂ悤C

(3) org.itscool.weber.controller.ActionBucket, ActionBucketImpl
ȉ̃\bhǉ
/**
 * p[^Ŏw肳ꂽBeanToXMLhLgo͂܂
 * @param document BeanToXMLhLg
 * @throws Exception
 */
public void printXml(BeanToXmlDocument document) throws Exception;

/**
 * p[^Ŏw肳ꂽIuWFNgXMLŏo͂܂
 * @param bean IuWFNg
 * @param rootName IuWFNg̃[gvf
 * @throws Exception
 */
public void printXml(Object bean, String rootName) throws Exception;

99 oOC
(1) org.itscool.commons.document.DocumentBeanParser
parseBean\bh̎sNullPointerException錻ۂC

===========================================================
version 4.0.2
===========================================================
99 oOC
(1) org.itscool.commons.bean.BeanFactory
    org.itscool.commons.document.XmlConfigReader
œ{ꂪ錻ۂC
(2) org.itscool.weber.testcase.WeberDbTestCase
EnitityInfoMappingCX^X鏈ǉ
iMySQLł̒P̃eXgɎs錻ۂC)
(3) org.itscool.commons.dao.Criteria
mysqlgpLIMIT̕sC
(4) org.itscool.stylist.function.DateC
NULL`FbNǉ
(5) org.itscool.stylist.io.HtmlTextConverterXSSΉ
izgɏĂ肪㌟vj
(6) org.itscool.commons.dao.Criteria
toUpdateStringiXVSQL쐬j̓t^iDate)f[^String
ŏĂ܂ۂC
===========================================================
version 4.0.3
===========================================================
(1) `FbN{bNXAIvV{bNXEL̓WJǉ
(2) OCɎsƂorg.itscool.weber.user.RoleException
gorg.itscool.weber.action.LoginFailedExceptionԂ悤ɂ
(3) org.itscool.stylist.HtmlLayoutServlet4x.setIncludeContents()
CAEg̋KɎw肳ꂽt@Cꍇ́AException
X[AʂɃbZ[W\悤C

(99) oOC
Eorg.itscool.stylist.el.BaseElRegex.java
  replaceFunction(),replaceEl()ɂNULL`FbNǉ
Eorg.itscool.stylist.io.HtmlConfigReader.java
  parseControlAttribute()ɂtitle"w_kind"vfꍇ
  𔲂悤C

 Weber^O̎ʎqtitlegƂɂ
HTMLtitleic[`bv̕\Ɏg)ƏdĂ邽߁A
Webertitlew肷ƃc[`bv̕\sȂ

j
 <input title="w_kind=address:w_property=name" type="text" name="name"/>

Ή@ƂāAw_kindAw_propertyinput^O̗vfƂĎgp

 <input title="c[`bv" w_kind="address" w_property="name" type="text" name="name"/>

 Weber^O̎ʎq"title"͏Iɔp~\

===========================================================
version 4.0.4
===========================================================
(99) oOC
SELECT OPTIONiCHECKBOCX)^ȎOlێ̏C

@m̃oO
ExceptionMappings4x̗O`MapŕێĂ邽߁A
O̗D揇΂΂ɂȂĂ܂


