You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(16) |
Sep
(10) |
Oct
(1) |
Nov
(2) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(148) |
Feb
(80) |
Mar
(41) |
Apr
(85) |
May
(247) |
Jun
(345) |
Jul
(237) |
Aug
(241) |
Sep
(439) |
Oct
(321) |
Nov
(413) |
Dec
(302) |
2004 |
Jan
(143) |
Feb
(147) |
Mar
(200) |
Apr
(107) |
May
(15) |
Jun
(36) |
Jul
(11) |
Aug
(1) |
Sep
(36) |
Oct
|
Nov
(6) |
Dec
|
2005 |
Jan
|
Feb
|
Mar
|
Apr
(115) |
May
(74) |
Jun
(215) |
Jul
(82) |
Aug
(47) |
Sep
(32) |
Oct
(8) |
Nov
(70) |
Dec
(24) |
2006 |
Jan
|
Feb
(1) |
Mar
(4) |
Apr
(2) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sha...@ya...> - 2007-05-26 21:35:40
|
> 致贵公司财务经理收: > 东莞市物资集团有限公司。长期有向外代开(普通发票),(增值税发票) >(普通商品销售发票)(服务发票)(运输专用发票),代开手续费请来电与我公司负责人详谈。 > 贵公司在进出项或做帐上相关的问题可来电咨讯。欢迎诚意的合作。 > 如这封邮件对贵公司造成打扰深表歉意, 顺祝商祺 ! > 联系人:刘小姐 > 电 话: 0-13650405151 |
From: carlos f. <cfr...@ho...> - 2007-04-16 14:18:36
|
_________________________________________________________________ Mensagens em garrafa? Seja audaz, use o Messenger! http://www.communicationevolved.com/pt-pt/ |
From: <vna...@to...> - 2006-10-24 21:02:22
|
PGh0bWw+DQoNCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50 PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9Z2IyMzEyIj4NCjxtZXRhIG5hbWU9IkdFTkVSQVRPUiIgY29u dGVudD0iTWljcm9zb2Z0IEZyb250UGFnZSA0LjAiPg0KPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250 ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4NCjx0aXRsZT6587mry764utTwyMs8L3Rp dGxlPg0KPC9oZWFkPg0KDQo8Ym9keT4NCg0KPHRhYmxlIGhlaWdodD0iNDAwIiBjZWxsU3BhY2lu Zz0iMCIgY2VsbFBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPg0KICA8dGJvZHk+ DQogICAgPHRyPg0KICAgICAgPHRkIHZBbGlnbj0idG9wIiBhbGlnbj0ibWlkZGxlIj4NCiAgICAg ICAgPHRhYmxlIHN0eWxlPSJCQUNLR1JPVU5ELVJFUEVBVDogcmVwZWF0LXg7IEhFSUdIVDogMTMx cHgiIGNlbGxTcGFjaW5nPSIwIiBjZWxsUGFkZGluZz0iMCIgd2lkdGg9Ijk5JSIgYmFja2dyb3Vu ZD0iaHR0cDovL21pbWcuMTYzLmNvbS9zdGF0aW9uZXJ5LzIwMDUwNzIwL2J1c25zXzAwMV9jb29f MDUuZ2lmIiBib3JkZXI9IjAiPg0KICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgIDx0cj4N CiAgICAgICAgICAgICAgPHRkIHN0eWxlPSJCQUNLR1JPVU5ELVJFUEVBVDogbm8tcmVwZWF0IiB3 aWR0aD0iMjgyIiBiYWNrZ3JvdW5kPSJodHRwOi8vbWltZy4xNjMuY29tL3N0YXRpb25lcnkvMjAw NTA3MjAvYnVzbnNfMDAxX2Nvb18wMS5qcGciPqGhPC90ZD4NCiAgICAgICAgICAgICAgPHRkPqGh PC90ZD4NCiAgICAgICAgICAgICAgPHRkIHN0eWxlPSJCQUNLR1JPVU5ELVJFUEVBVDogbm8tcmVw ZWF0IiB3aWR0aD0iMjc5IiBiYWNrZ3JvdW5kPSJodHRwOi8vbWltZy4xNjMuY29tL3N0YXRpb25l cnkvMjAwNTA3MjAvYnVzbnNfMDAxX2Nvb18wNi5qcGciPqGhPC90ZD4NCiAgICAgICAgICAgIDwv dHI+DQogICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgPC90YWJsZT4NCiAgICAgICAgPHRhYmxl IGNlbGxTcGFjaW5nPSIwIiBjZWxsUGFkZGluZz0iMCIgd2lkdGg9Ijk5JSIgYmdDb2xvcj0iI2Y0 ZjhmYiIgYm9yZGVyPSIwIj4NCiAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICA8dHI+DQog ICAgICAgICAgICAgIDx0ZD6hoTwvdGQ+DQogICAgICAgICAgICAgIDx0ZCBzdHlsZT0iRk9OVC1T SVpFOiAxNHB4OyBDT0xPUjogIzMzMzMzMzsgTElORS1IRUlHSFQ6IDI2cHgiIHdpZHRoPSI5NSUi IGJhY2tncm91bmQ9Imh0dHA6Ly9taW1nLjE2My5jb20vc3RhdGlvbmVyeS8yMDA1MDcyMC9idXNu c18wMDFfY29vX2dyaWQuZ2lmIj4NCiAgICAgICAgICAgICAgICA8ZGl2Pg0KICAgICAgICAgICAg ICAgICAgPFNUQVRJT05FUlk+DQogICAgICAgICAgICAgICAgICA8cD48Yj6587mry764utTwyMso vq3A7S+yxs7xKaO6PGJyPg0KICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IMT6 usMhztK5q8u+ysfSu7zSvK/Qy7DsyrXStSy79dLXo6zO79fK1MvK5Cy0+rm6tPrP+rXIzqrSu8zl tcTT0M/e1PDIzrmry74ssqLT67bgvNK5q8u+09A8YnI+DQogICAgICAgICAgICAgICAgICC6z9f3 o6jT0LbguPa5q8u+zKfNt6OsxNq12NKy09C5q8u+o6nDv9TCtrzT0NK7tqjK/bbutcS3osaxv8nS 1LbUzeK0+r+qLMjnufPLvtTa1/bVyqOstda/27vyycw8YnI+DQogICAgICAgICAgICAgICAgICDS tbvutq/W0NPQtMvQ6NKqLNK7sOPV/bnmsvrGtyi3x7n6vNLXqL/Yu/K9+9a5svrGtynO0rmry767 8rrP1/e5q8u+try/ydLUtPq/qiy3osaxwODQzcjnz8I6PGJyPg0KICAgICAgICAgICAgICAgICAg Jm5ic3A7Jm5ic3A7Jm5ic3A7INK7o7ogxtXNqLn6y7C3osaxo7qjqMnMxrfP+srbo6nK1TogDQog ICAgICAgICAgICAgICAgICA8c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9IkZPTlQtU0laRTogMTJw dDsgQ09MT1I6ICNmZjAwY2M7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogy87M5TsgbXNvLWZvbnQta2VybmluZzogMHB0Ij4wLjUtMiU8L3NwYW4+IA0KICAgICAgICAg ICAgICAgICAgoaM8YnI+DQogICAgICAgICAgICAgICAgICA8YnI+DQogICAgICAgICAgICAgICAg ICAmbmJzcDsmbmJzcDsmbmJzcDsgtv6jusbVzai12Muwt6LGsaO6u/XO79TLyuQmbHQ7uavCt6Os xNq606Osufq8yj6jrL2o1v6wstewt8++yc7v18qjrMbky/y3/s7xJmx0O7njuOa30SzXocvet9Es PGJyPg0KICAgICAgICAgICAgICAgICAgu+HS6bfRLNfJ0a+30aOsvajW/rCy17C1yD4gLLzTuaTQ 3sDtLLaotu6yzdL7tcjXqNPDt6LGscrVOiANCiAgICAgICAgICAgICAgICAgIDxzcGFuIGxhbmc9 IkVOLVVTIiBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogI2ZmMDBjYzsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiDLzszlOyBtc28tZm9udC1rZXJuaW5nOiAw cHQiPjAuNS0yJTwvc3Bhbj4gDQogICAgICAgICAgICAgICAgICDX89PSLjxicj4NCiAgICAgICAg ICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyDI/aO6 ILqjudihtr34v9rU9ta1y7AxNyWht9eo08O9yb/uyukg0+uhtsbVzajU9ta1y7AxNyWht82stcjK udPDytU6IA0KICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsg Y29sb3I6ICNmZjAwY2M7IGZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog y87M5TsgbXNvLWZvbnQta2VybmluZzogMHB0IiBsYW5nPSJFTi1VUyI+NTwvc3Bhbj48c3BhbiBs YW5nPSJFTi1VUyIgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICNmZjAwY2M7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogy87M5TsgbXNvLWZvbnQta2Vybmlu ZzogMHB0Ij4tNyU8L3NwYW4+IA0KICAgICAgICAgICAgICAgICAgLL7fzOXK1bfRwe3S6aGjPGJy Pg0KICAgILG+y77Kx7TTy7C+1tX9uebB7LP2tcS3osaxLL74ttTV5sq109DQpy7OqtT2vNPLq7e9 0MXIzqOs0tTJz7eixrG++b/J1Nq588u+tbG12MuwvtbR6daktdY8YnI+DQogICAgICAgICAgICAg ICAgICC/27rzuLa/7qGjyMW9wcT6x+u24NStwcKjoTxicj4NCiAgICAgICAgICAgICAgICAgIDxi cj4NCiAgICC5q8u+w/uzxqO6ueO2q8D79s7KtdK109DP3rmry74mbmJzcDs8YnI+DQogICAgwaog z7UgyMujus31zqzD8Txicj4gDQogICAgwarPtcrWu/qjuiA8c3BhbiBzdHlsZT0iZm9udC1zaXpl OiAxMnB0OyBjb2xvcjogI2ZmMDBjYzsgZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiDLzszlOyBtc28tZm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9IkVOLVVTIj4xMzgyNDM0 MzkyODwvc3Bhbj48YnI+DQogICAgRSAtbWFpIKO6PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJw dDsgZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiDLzszlOyBtc28tZm9u dC1rZXJuaW5nOiAwcHQiIGxhbmc9IkVOLVVTIj48YSBocmVmPSJodHRwOi8vY2h6bGNqYW41OEB5 YWhvby5jb20uY24iPmNoemxjamFuNThAeWFob28uY29tLmNuPC9hPiZuYnNwOzwvc3Bhbj48YnI+ DQogICAgtdjWt6O6ye7b2srQuKPM78f4sNm7qLb+wrfJzNK1s8cgPC9iPjwvcD4NCiAgICAgICAg ICAgICAgICAgIDxkaXY+DQogICAgICAgICAgICAgICAgICAgIKGhDQogICAgICAgICAgICAgICAg ICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDxkaXY+DQogICAgICAgICAgICAgICAgICAgIKGh DQogICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDxkaXY+DQogICAg ICAgICAgICAgICAgICAgIKGhDQogICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAg ICAgICAgIDxkaXY+DQogICAgICAgICAgICAgICAgICAgIKGhDQogICAgICAgICAgICAgICAgICA8 L2Rpdj4NCiAgICAgICAgICAgICAgICAgIDxkaXY+DQogICAgICAgICAgICAgICAgICA8L2Rpdj4N CiAgICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAg ICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwO9bCPGJyPg0KICAgICAgICAgICAgICAgICAgwPGjoTxicj4NCiAgICAgICAg ICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgPC90 ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgPC90YWJs ZT4NCiAgICAgIDwvdGQ+DQogICAgPC90cj4NCiAgPC90Ym9keT4NCjwvdGFibGU+DQoNCjwvYm9k eT4NCg0KPC9odG1sPg0K |
From: C. G. <gro...@po...> - 2006-06-27 18:33:13
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Cheers guys, i wrote a taglib for rendering a html-calendar. I asked at the struts list if this is of use, but it seems it isn't. After exploring the subprojects here it may fit here. This project is for making life easier with struts. It has a subproject called "AjaxTags". So why making one up with everyday taglibs? I found no alternativ to writing a calendar taglib. Ok, i could pay for one. Usage would be very easy, it's quite simple: <cal:calendar href="./gigs.do" param="date">date_in_long</cal:calendar> This tag renders a html calendar and provides links to different dates. If you click a link you will figure out that it points to: domain.de/gigs.do?date=123355 Thats all. What do you think? Chris. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.1 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFEoXrAkv8rKBUE/T4RAuIsAJ4onjrs8fkoMqBJlZWQkJrairazrQCfTvIq vDy6lp7G5s5vD5uy8FJAhNg= =y1Jn -----END PGP SIGNATURE----- |
From: <szy...@16...> - 2006-04-06 14:29:40
|
贵司负责人您好: 我公司每月有一部分多余的增值税发票(按3~6%左右优惠代开)和 普通销售税发票(国税、地税:服务、建筑、运输、广告等按0.8~1.5% 左右优惠代开)!如贵司对我司发票的真伪方面有疑问,均可上税务网 查证或到税务局核对验证! 我们将以行动和服务让贵司体会到我们是诚信为经营理念运作的, 若贵司有需要请联系:(如有疑问,欢迎来电洽谈;如有打扰,敬请谅解) 此信息长期有效! 详情请电:13927455633 联 系 人:林先生 E - MAIL :szy...@16... 深圳市运通实业有限公司 |
From: <szy...@16...> - 2006-04-06 10:01:11
|
贵司负责人您好: 我公司每月有一部分多余的增值税发票(按3~6%左右优惠代开)和 普通销售税发票(国税、地税:服务、建筑、运输、广告等按0.8~1.5% 左右优惠代开)!如贵司对我司发票的真伪方面有疑问,均可上税务网 查证或到税务局核对验证! 我们将以行动和服务让贵司体会到我们是诚信为经营理念运作的, 若贵司有需要请联系:(如有疑问,欢迎来电洽谈;如有打扰,敬请谅解) 此信息长期有效! 详情请电:13927455633 联 系 人:林先生 E - MAIL :szy...@16... 深圳市运通实业有限公司 |
From: <chz...@ya...> - 2006-03-22 19:21:00
|
贵公司负责人(经理/财务): 您好!我公司是一家集兴办实业,运输、代购代销等为一体的有限责任公司,并与多家公司有合作 (有多个公司抬头,内地也有公司)每月都有一定数额的发票可以对外代开,如贵司在做帐,抵扣或商 业活动中有此需要,一般正规产品(非国家专控或禁止产品)我公司都可以代开,发票类型如下: 一: 普通国税发票:(商品销售)收: 0.8%--2% 。普通地税发票:货物运输、建筑安装废旧物资, 其它服务<广告费,住宿费,会议费,咨询费等> ,加工修理,定额餐饮等专用发票收: 1%--2% 左右. 二: 海关《进口增值税17%》专用缴款书 与《普通增值税17%》同等使用收: 5%--7% ,具体收费另议。 本司是从税局正规领出的发票,绝对真实有效.为增加双方信任,以上发票均可在贵司当地税局验证抵 扣后付款。扰搅您请多原谅! 公司名称:广东快那实业有限公司 联 系 人:王维民 联系电话: 13824343928 E -mai :chz...@ya... |
From: <jm...@us...> - 2006-03-09 09:03:50
|
Update of /cvsroot/struts/struts-site/src/documentation/content/xdocs/strutsdialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12666/src/documentation/content/xdocs/strutsdialogs Modified Files: index.xml Log Message: Index: index.xml =================================================================== RCS file: /cvsroot/struts/struts-site/src/documentation/content/xdocs/strutsdialogs/index.xml,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** index.xml 2 Mar 2006 08:39:16 -0000 1.19 --- index.xml 9 Mar 2006 09:03:47 -0000 1.20 *************** *** 9,19 **** <section id="overview_v2"> ! <title>Version 2.0 preview is available</title> ! <p>Check out the preview of Struts Dialogs version 2.0. Same functionality, ! simpler configuration and less classes. You can find the preview release ! in the <link href="https://sourceforge.net/project/showfiles.php?group_id=49385&package_id=154597">download section</link>. ! The final release of version 2.0 is unlikely to contain code changes. It will contain more samples and better documentation. ! This page is work in progress in preparation for version 2.0. The samples look and behave the same, so 1.x online demos are ! still relevant.</p> <p>Version 1.x documentation can be found <link href="index_v1.html">here</link>.</p> </section> --- 9,16 ---- <section id="overview_v2"> ! <title>Version 2.0 is available</title> ! <p>Version 2.0 of Struts Dialogs retains the same functionality, simpler configuration and less classes. ! In fact, version 2.0 does not contain any of the version 1.x classes, and depends solely on one ! EventDispatcher class.</p> <p>Version 1.x documentation can be found <link href="index_v1.html">here</link>.</p> </section> *************** *** 139,143 **** </section> - <section id="wizardaction"> <title>Robust page flow</title> --- 136,139 ---- *************** *** 151,169 **** </section> - <!-- <section id="crudaction"> ! <title>CRUDAction: simplifies CrUD operations</title> ! <p><link href="crudaction.html">CRUDAction</link> implements all operations needed ! to manipulate business data, nested business object (BO), ! or nested value object (VO) also called an <code>item</code>. This action allows to create ! new item, duplicate existing item, edit, view, clear and delete item.</p> - <p>A very common use case is browsing a list of items, then selecting one item and performing - different operations on it. CRUDAction can handle this use case with grace. It is possible to - implement handling of both item list and CRUD operations as one web component.</p> - </section> - --> </section> <section id="mailreader"> <title>Mail Reader demo application</title> --- 147,159 ---- </section> <section id="crudaction"> ! <title>CrUD operations</title> ! <p><code>EmployeexxxAction</code> classes in <code>net.jspcontrols.dialogs.samples.crud</code> ! package show how to perform standard create, read, update and delete operations along with ! displaying the list of items to choose from.</p> </section> + <!-- <section id="mailreader"> <title>Mail Reader demo application</title> *************** *** 178,181 **** --- 168,174 ---- compare Struts Dialogs implementation with original Struts version.</p> </section> + --> + + </section> <section id="demos"> *************** *** 193,199 **** </document> - - - Top Gear isn't running on Discovery anymore because they are in the process of creating an American version of the show, with a US studio, and new hosts. - - It will be interesting to see how it comes out, I'm not very optimistic that they'll have any luck recreating the humor of the British version but at least they'll give car prices in USD :) --- 186,187 ---- |
From: <jm...@us...> - 2006-03-02 08:39:25
|
Update of /cvsroot/struts/struts-site/src/documentation/content/xdocs/strutsdialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14195/src/documentation/content/xdocs/strutsdialogs Modified Files: index.xml Added Files: index_v1.xml Log Message: --- NEW FILE: index_v1.xml --- <?xml version="1.0"?> <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"> <document> <header> <title>Struts Dialogs</title> </header> <body> <section id="overview_new"> <title>Overview</title> <p><strong>Struts Dialogs</strong> is a library for Struts 1.2.x framework, which improves development process and makes applications more robust and user-friendly. Struts Dialogs combines best features of Struts Front Controller pattern with Page Controller features of ASP.NET. It implements event handling, basic state management, provides simplified control flow and facilitates component development.</p> <ul> <li><strong>Simplified control flow</strong> - cleaner separation of concerns between actions, action forms and JSP pages.</li> <li><strong>Event handling</strong> - uniform processing of command links and form submission events.</li> <li><strong>State management</strong> - using session-scoped form bean as first-class stateful input/output object.</li> <li><strong>Easier configuration</strong> - improved request/response cycle is controlled with less XML markup and fewer Java classes.</li> <li><strong>Web Wizards</strong> - controlled flow of web pages for a given web resource, similar to traditional desktop wizard dialogs.</li> </ul> </section> <section id="controlflow"> <title>Front Controller pattern</title> <p>Struts is a controller framework that adheres closely to the principles of Front Controller Pattern (<link href="http://java.sun.com/blueprints/corej2eepatterns/Patterns/FrontController.html">J2EE Front Controller pattern</link>, <link href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/DesFrontController.asp">.NET Front Controller pattern</link>):</p> <ul> <li><strong>ActionServlet</strong>, <strong>RequestProcessor</strong>: Controller (J2EE); Handler (.NET)</li> <li><strong>Action</strong>: Dispatcher (J2EE); part of Command (.NET)</li> <li><strong>ActionForm</strong>: part of Command (.NET)</li> <li><strong>JSP page</strong>: view</li> </ul> <p>The Front Controller pattern does not specify the exact details of how the state should be managed, or how a response should be handled after a view is rendered.</p> </section> <section id="traditionalflow"> <title>Struts: traditional request/response cycle</title> <p>Class <code>ActionForm</code> was initially designed as convenience object for input data. Struts guidelines recommend using ActionForm in request scope. This precludes from storing state information in ActionForm. It is up to developer to decide where to queue output data to, and where to store information between requests.</p> <p>Struts users came up with idea of pre-action (output action, setup action) and post-action (input action) dispatchers, so actions and JSP pages are interlaced, while action-relevant business data (green oval on the picture below) is located outside of an action:</p> <figure src="images/struts-pre-post-action.gif" alt="Pre- and Post- actions"/> <p>Each interactive JSP page is handled by at least two actions, and each action can render different pages. Because of many-to-many relationships between actions and JSP pages, web application becomes hard to maintain right from the start.</p> </section> <section id="codebehind"> <title>Struts Dialogs: code-behind and event handling</title> <p>Struts Dialogs makes development simpler by employing code-behind pattern similar to one used in ASP.NET framework, while keeping your investments into Struts.</p> <p>One of the ASP.NET concepts is the unity of page markup (ASPX) and business-related code (C# or VB). A page layout and widgets are defined in the markup, while page lifecycle and incoming events are handled by corresponding class file. This concept is especially easy to grasp for programmers of desktop applications:</p> <source> Before page is displayed, the code behind it initializes page data. After page is rendered, activating a widget in the browser window generates event, which is dispatched to a handler. defined in the class. </source> <p>This pattern is implemented by Struts Dialogs with no changes to core Struts classes or tag libraries. Moreover, it is improved, because Struts allows to define several markup pages corresponding to one Java class.</p> <p>To use event-dispatching actions one should think in terms of <em>web resources</em>. Internet is about web resources, not about mere pages. A page is just a visualization of a resource in its current state at a given time. An address identifies a resource, not a particular representaion of it. A resource can be rendered differently depending on its state.</p> <figure src="images/struts-dialog-action.gif" alt="Dialog action"/> <p>In Struts Dialogs each resource is represented by one action (which consists of an action class and a form bean). Depending on resource state, an action can render one view or another. Views, corresponding to an action, are defined as JSP pages. Each JSP page belongs to one action only, which is called a <em>parent action</em>.</p> <p>Submission of a form from JSP page generates input event, which is handled by the page's parent action. Action class defines handler methods for every input event. Input events can be generated not only by submitting a form (POST), but also by clicking on a command link (GET). Think of enhanced <code>DispatchAction</code>.</p> <p>Direct linking from JSP page to another resource is possible, but discouraged. Instead, a command link should generate an event, which would be handled by parent action class. It is up to an action class to decide where to navigate next. This approach allows to define all navigation targets in the <code>struts-config.xml</code> file, having a clear representation of web application structure.</p> </section> <section id="state_management"> <title>State management</title> <p>Struts Dialogs does not introduce new classes to manage application state. Instead, it uses existing ActionForm class as a first-class stateful input/output object. In JSF terms, ActionForm now acts as a backing bean for JSP page. There is nothing groundbreaking in using session scope for ActionForm, or in storing output data in it. Online poll shows that about 60% of respondents use ActionForm for queueing output data.</p> <p>With changing ActionForm scope to session, it is possible to initialize form bean only once, and to reuse data between requests. This is convenient for form resubmissions, for page reloading or for navigating back to previous resource. Having all resource data in a single ActionForm simplifies JSP page. Struts automatically populates ActionForm with submitted data on input phase, the same data can be used for presentation on render phase without additional efforts.</p> <p>Session scope justifies the usage of nested properties within ActionForm. It is easy and convenient to use business objects or DTOs as nested properties instead of copying their data to ActionForm and from ActionForm.</p> </section> <!-- <section id="components"> <title>Component Development</title> <p>Struts Dialogs library allows building <em>web components</em> using Struts and JSP.</p> <p><strong>Web component</strong> is a server-side object, which is:</p> <ul> <li>stateful;</li> <li>can process input events;</li> <li>can render itself according to its current state;</li> </ul> <p><strong>Web control</strong> is a web component, which:</p> <ul> <li>can be embedded into a <em>master page</em>;</li> <li>can interact with master page and, optionally, with other web controls.</li> </ul> <p><strong>Web dialog</strong> is a special case of a web component, which has only one corresponding view.</p> <p>If the above definition sounds too vague and generic, think of a standard login form. It asks a user for name and password. If entered information is incorrect, login form redisplays itself along with error message. Login form can render itself, it has only one view, and it is stateful, because if you reload login page, it retains username and password. Therefore, login form is an example of a <link href="http://www.superinterface.com/strutsdialog/logindialog.html">login dialog</link>.</p> <p>Now consider a component which not only collects username and password, but also displays user's login/logout status. It is more complex than a login dialog, because it maintains two states and two corresponding views: "not logged in" and "logged in". This is a <link href="http://www.superinterface.com/strutsdialog/logincomponent.html">login component</link>. After user successfully logs in, login component displays page corresponding to "logged in" state, which shows user information. Whenever logged-in user navigates to this component, the latter shows user's information.</p> <p>What if we want to embed login component in a complex web page? For example, see how it is done by CollabNet on <link href="http://www.java.net">www.java.net</link> website. There is a small login form in the upper right corner of the home page. After you log in, the content of the form changes and shows your login name and logout button. This login form, embedded into master page, is an example of <link href="http://www.superinterface.com/strutsdialog/logincontrol.html">login control</link>.</p> </section> --> <section id="actions"> <title>Actions</title> <p>Most features of the Struts Dialogs library are available through use of different action classes. Most often you will be using DialogAction class, extending your specific action class from it.</p> <section id="selectaction"> <title>SelectAction: dispatches submit events</title> <p><link href="selectaction.html">SelectAction</link> is an enhancement of standard DispatchAction. It handles submit events and provides improved dispatching functionality. You can use this action class if you do not need full power of DialogAction, and all you want is just to dispatch submit events to handler methods. SelectAction has the following features:</p> <ul> <li>works uniformly with pushbuttons, image buttons and regular links;</li> <li>allows to set arbitrary button caption and to change it at runtime.</li> </ul> </section> <section id="dialogaction"> <title>DialogAction: Jack of all trades</title> <p><link href="dialogaction.html">DialogAction</link> is the main asset of Struts Dialogs library.</p> <p>DialogAction allows creating robust web components and web controls, which enhibit friendly user experience, react properly to Refresh, Back and Forward buttons, and do not cause implicit double submits or annoying POSTDATA messages.</p> <p><code>DialogAction</code> adds the following capabilities to event dispatching features of SelectAction:</p> <ul> <li>processing of initialization event;</li> <li>handling of error messages;</li> <li>view rendering;</li> <li>state handling (via corresponding action form);</li> <li>two-phase input processing (using POST-redirect-GET pattern)</li> </ul> </section> <section id="wizardaction"> <title>WizardAction: creates robust page flows</title> <p><link href="wizardaction.html">WizardAction</link> allows to create <em>web wizards</em>, similar to traditional desktop wizard dialogs. A wizard has predefined sequence of states, and is rendered with HTML forms, containing Back, Forward, Cancel and Done pushbuttons.</p> </section> <section id="crudaction"> <title>CRUDAction: simplifies CrUD operations</title> <p><link href="crudaction.html">CRUDAction</link> implements all operations needed to manipulate business data, nested business object (BO), or nested value object (VO) also called an <code>item</code>. This action allows to create new item, duplicate existing item, edit, view, clear and delete item.</p> <p>A very common use case is browsing a list of items, then selecting one item and performing different operations on it. CRUDAction can handle this use case with grace. It is possible to implement handling of both item list and CRUD operations as one web component.</p> </section> </section> <section id="mailreader"> <title>Mail Reader demo application</title> <p>The Struts Dialogs package now includes a version of "MailReader Demonstration Application", originally bundled with core Struts distribution.</p> <p>MailReader is rewritten using component technology of Struts Dialogs to show the possibility and benefits of component approach for a Struts application. See the <link href="mailreader-walkingtour.html">Mail Reader Walking Tour</link> for details.</p> <p>See <link href="http://www.superinterface.com/mailreader">MailReader live demo</link> to compare Struts Dialogs implementation with original Struts version.</p> </section> <section id="demos"> <title>Live Demos</title> <p>Each action class from Struts Dialogs library is illustrated with sample code and <link href="http://www.superinterface.com/strutsdialog">live demos</link>.</p> </section> <section id="download"> <title>Download</title> <p><link href="https://sourceforge.net/project/showfiles.php?group_id=49385&package_id=154597">Download Struts Dialogs</link>.</p> </section> </body> </document> Index: index.xml =================================================================== RCS file: /cvsroot/struts/struts-site/src/documentation/content/xdocs/strutsdialogs/index.xml,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** index.xml 10 Feb 2006 07:59:51 -0000 1.18 --- index.xml 2 Mar 2006 08:39:16 -0000 1.19 *************** *** 8,18 **** <body> <section id="overview_new"> <title>Overview</title> ! <p><strong>Struts Dialogs</strong> is a library for Struts 1.2.x framework, which improves ! development process and makes applications more robust and user-friendly. ! Struts Dialogs combines best features of Struts Front Controller pattern with ! Page Controller features of ASP.NET. It implements event handling, basic state management, ! provides simplified control flow and facilitates component development.</p> <ul> <li><strong>Simplified control flow</strong> - cleaner separation of concerns between actions, --- 8,27 ---- <body> + <section id="overview_v2"> + <title>Version 2.0 preview is available</title> + <p>Check out the preview of Struts Dialogs version 2.0. Same functionality, + simpler configuration and less classes. You can find the preview release + in the <link href="https://sourceforge.net/project/showfiles.php?group_id=49385&package_id=154597">download section</link>. + The final release of version 2.0 is unlikely to contain code changes. It will contain more samples and better documentation. + This page is work in progress in preparation for version 2.0. The samples look and behave the same, so 1.x online demos are + still relevant.</p> + <p>Version 1.x documentation can be found <link href="index_v1.html">here</link>.</p> + </section> + <section id="overview_new"> <title>Overview</title> ! <p><strong>Struts Dialogs</strong> is both a library and a development approach for Struts 1.2.x framework ! that improves development process and makes applications more robust and user-friendly. ! Struts Dialogs demonstrates how event handling, basic state management, and provides simplified control flow.</p> <ul> <li><strong>Simplified control flow</strong> - cleaner separation of concerns between actions, *************** *** 20,25 **** <li><strong>Event handling</strong> - uniform processing of command links and form submission events.</li> ! <li><strong>State management</strong> - using session-scoped form bean as first-class stateful ! input/output object.</li> <li><strong>Easier configuration</strong> - improved request/response cycle is controlled with less XML markup and fewer Java classes.</li> --- 29,33 ---- <li><strong>Event handling</strong> - uniform processing of command links and form submission events.</li> ! <li><strong>State management</strong> - using session-scoped form bean as stateful input/output buffer.</li> <li><strong>Easier configuration</strong> - improved request/response cycle is controlled with less XML markup and fewer Java classes.</li> *************** *** 29,111 **** </section> - <section id="controlflow"> - <title>Front Controller pattern</title> - <p>Struts is a controller framework that adheres closely to the principles of Front Controller Pattern - (<link href="http://java.sun.com/blueprints/corej2eepatterns/Patterns/FrontController.html">J2EE Front Controller pattern</link>, - <link href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/DesFrontController.asp">.NET Front Controller pattern</link>):</p> - - <ul> - <li><strong>ActionServlet</strong>, <strong>RequestProcessor</strong>: Controller (J2EE); Handler (.NET)</li> - <li><strong>Action</strong>: Dispatcher (J2EE); part of Command (.NET)</li> - <li><strong>ActionForm</strong>: part of Command (.NET)</li> - <li><strong>JSP page</strong>: view</li> - </ul> - - <p>The Front Controller pattern does not specify the exact details of how the state should be managed, - or how a response should be handled after a view is rendered.</p> - </section> - <section id="traditionalflow"> <title>Struts: traditional request/response cycle</title> ! <p>Class <code>ActionForm</code> was initially designed as convenience object for input data. Struts guidelines recommend using ActionForm in request scope. This precludes from storing state information in ActionForm. It is up to developer to decide where to queue output data to, and where to store information between requests.</p> ! <p>Struts users came up with idea of pre-action (output action, setup action) and ! post-action (input action) dispatchers, so actions and JSP pages are interlaced, while ! action-relevant business data (green oval on the picture below) is located outside of an action:</p> ! ! <figure src="images/struts-pre-post-action.gif" alt="Pre- and Post- actions"/> ! ! <p>Each interactive JSP page is handled by at least two actions, and each action can render ! different pages. Because of many-to-many relationships between actions and JSP pages, ! web application becomes hard to maintain right from the start.</p> ! </section> ! ! <section id="codebehind"> ! <title>Struts Dialogs: code-behind and event handling</title> ! <p>Struts Dialogs makes development simpler by employing code-behind pattern similar ! to one used in ASP.NET framework, while keeping your investments into Struts.</p> ! <p>One of the ASP.NET concepts is the unity of page markup (ASPX) and business-related code (C# or VB). ! A page layout and widgets are defined in the markup, while page lifecycle and incoming events are ! handled by corresponding class file. This concept is especially easy to grasp for programmers ! of desktop applications:</p> ! <source> Before page is displayed, the code behind it initializes page data. ! After page is rendered, activating a widget in the browser window ! generates event, which is dispatched to a handler. defined in the class. ! </source> - <p>This pattern is implemented by Struts Dialogs with no changes to core Struts classes - or tag libraries. Moreover, it is improved, because Struts allows to define several - markup pages corresponding to one Java class.</p> ! <p>To use event-dispatching actions one should think in terms of <em>web resources</em>. ! Internet is about web resources, not about ! mere pages. A page is just a visualization of a resource in its current state at ! a given time. An address identifies a resource, not a particular representaion of it. ! A resource can be rendered differently depending on its state.</p> ! <figure src="images/struts-dialog-action.gif" alt="Dialog action"/> ! <p>In Struts Dialogs each resource is represented by one action (which consists of ! an action class and a form bean). Depending on resource state, an action can render ! one view or another. Views, corresponding to an action, are defined as JSP pages. ! Each JSP page belongs to one action only, which is called a <em>parent action</em>.</p> ! <p>Submission of a form from JSP page generates input event, which is handled by ! the page's parent action. Action class defines handler methods for every input event. ! Input events can be generated not only by submitting a form (POST), but also by ! clicking on a command link (GET). Think of enhanced <code>DispatchAction</code>.</p> ! <p>Direct linking from JSP page to another resource is possible, but discouraged. ! Instead, a command link should generate an event, which would be handled by parent action ! class. It is up to an action class to decide where to navigate next. This approach ! allows to define all navigation targets in the <code>struts-config.xml</code> file, ! having a clear representation of web application structure.</p> </section> --- 37,91 ---- </section> <section id="traditionalflow"> <title>Struts: traditional request/response cycle</title> ! <p>Class <code>ActionForm</code> was initially designed as convenience object for input data only. Struts guidelines recommend using ActionForm in request scope. This precludes from storing state information in ActionForm. It is up to developer to decide where to queue output data to, and where to store information between requests.</p> ! <p>Struts users came up with idea of <em>setup action</em> (output action, pre-action) and ! <em>submit action</em> (input action, post-action) dispatchers. This pattern is page-centric, ! actions and JSP pages are interlaced, business data is located outside of an action or a form bean:</p> ! <figure src="images/struts-pre-post-action-2.gif" alt="Pre- and Post- actions"/> ! <p>This approach is not perfect:</p> ! <ul> ! <li>Focused on a JSP page, not on a web resource in general.</li> ! <li>Every page of a web resource is likely to have its own pair of setup and submit actions. ! The picture above represents one JSP page and two actions associated with it. ! More pages, more actions, and things can quickly get out of control.</li> ! <li>One web resource is defined with several action mappings in the <code>struts-config.xml</code> file ! as well as with several Java classes.</li> ! <li>Output data is scattered in an uncontrolled manner throughout request and session scope.</li> ! <li>In case of error a page is redisplayed by a submit action, not by setup action; that opens a whole can of worms:</li> ! <ul> ! <li>If input data is invalid and autovalidation is turned on, a submit action class is never get called ! and cannot affect the workflow.</li> ! <li>One page is represented with two different URLs in the browser.</li> ! <li>An attempt to refresh a page after it has been redisplayed causes double submit.</li> ! </ul> ! <li>Success page often corresponds to a logically different web resource, this leads to a spaghetti code ! both in Java code as well as in struts-config.xml file.</li> ! </ul> ! </section> ! <section id="codebehind"> ! <title>Struts Dialogs: clean two-phase approach</title> ! <p>Struts Dialogs makes development simpler by using only two, or even just one action class per ! web resource. A web resource can be served with one setup/render action and one submit action. ! Submit action dispatches client event to a respective handler method, while render action ! selects a JSP page appropriate to current resource state, and fill out a form bean with ! output data.</p> ! <figure src="images/struts-dialog-action-2.gif" alt="Dialog action"/> ! <p>See <link href="http://wiki.apache.org/struts/DataEntryForm">Data Entry Form wiki page</link> ! for more discussion on Struts MVC.</p> </section> *************** *** 114,119 **** <p>Struts Dialogs does not introduce new classes to manage application state. ! Instead, it uses existing ActionForm class as a first-class stateful input/output object. ! In JSF terms, ActionForm now acts as a backing bean for JSP page. There is nothing groundbreaking in using session scope for ActionForm, or in storing output data in it. Online poll shows that about 60% of respondents use ActionForm for queueing output data.</p> --- 94,99 ---- <p>Struts Dialogs does not introduce new classes to manage application state. ! Instead, it uses existing ActionForm class as a stateful input/output object. ! In JSF terms, ActionForm acts as a backing bean for JSP page(s) of a web resource. There is nothing groundbreaking in using session scope for ActionForm, or in storing output data in it. Online poll shows that about 60% of respondents use ActionForm for queueing output data.</p> *************** *** 132,228 **** </section> ! <!-- ! <section id="components"> ! <title>Component Development</title> ! <p>Struts Dialogs library allows building <em>web components</em> using Struts and JSP.</p> ! ! <p><strong>Web component</strong> is a server-side object, which is:</p> ! <ul> ! <li>stateful;</li> ! <li>can process input events;</li> ! <li>can render itself according to its current state;</li> ! </ul> ! ! <p><strong>Web control</strong> is a web component, which:</p> ! <ul> ! <li>can be embedded into a <em>master page</em>;</li> ! <li>can interact with master page and, optionally, with other web controls.</li> ! </ul> ! ! <p><strong>Web dialog</strong> is a special case of a web component, which has only one ! corresponding view.</p> ! ! <p>If the above definition sounds too vague and generic, think of a standard login form. ! It asks a user for name and password. If entered information is incorrect, login form ! redisplays itself along with error message. Login form can render itself, it has only ! one view, and it is stateful, because if you reload login page, it retains username and ! password. Therefore, login form is an example of a ! <link href="http://www.superinterface.com/strutsdialog/logindialog.html">login dialog</link>.</p> ! ! <p>Now consider a component which not only collects username and password, but also ! displays user's login/logout status. It is more complex than a login dialog, because ! it maintains two states and two corresponding views: "not logged in" and "logged in". ! This is a <link href="http://www.superinterface.com/strutsdialog/logincomponent.html">login component</link>. ! After user successfully logs in, login component displays page corresponding to "logged in" ! state, which shows user information. Whenever logged-in user navigates to this component, ! the latter shows user's information.</p> ! ! <p>What if we want to embed login component in a complex web page? For example, see ! how it is done by CollabNet on <link href="http://www.java.net">www.java.net</link> website. ! There is a small login form in the upper right corner of the home page. After you log in, ! the content of the form changes and shows your login name and logout button. This ! login form, embedded into master page, is an example of ! <link href="http://www.superinterface.com/strutsdialog/logincontrol.html">login control</link>.</p> ! </section> ! --> ! <section id="actions"> ! <title>Actions</title> ! <p>Most features of the Struts Dialogs library are available through use of different action ! classes. Most often you will be using DialogAction class, extending your specific action class ! from it.</p> ! ! <section id="selectaction"> ! <title>SelectAction: dispatches submit events</title> ! <p><link href="selectaction.html">SelectAction</link> is an enhancement of standard DispatchAction. ! It handles submit events and provides improved dispatching functionality. You can use this action ! class if you do not need full power of DialogAction, and all you want is just to dispatch submit ! events to handler methods. SelectAction has the following features:</p> ! <ul> ! <li>works uniformly with pushbuttons, image buttons and regular links;</li> ! <li>allows to set arbitrary button caption and to change it at runtime.</li> ! </ul> </section> ! <section id="dialogaction"> ! <title>DialogAction: Jack of all trades</title> ! <p><link href="dialogaction.html">DialogAction</link> is the main asset of ! Struts Dialogs library.</p> ! ! <p>DialogAction allows creating robust ! web components and web controls, which enhibit friendly user experience, ! react properly to Refresh, Back and Forward buttons, and do not cause implicit ! double submits or annoying POSTDATA messages.</p> ! ! <p><code>DialogAction</code> adds the following capabilities to event dispatching ! features of SelectAction:</p> ! <ul> ! <li>processing of initialization event;</li> ! <li>handling of error messages;</li> ! <li>view rendering;</li> ! <li>state handling (via corresponding action form);</li> ! <li>two-phase input processing (using POST-redirect-GET pattern)</li> ! </ul> </section> <section id="wizardaction"> ! <title>WizardAction: creates robust page flows</title> ! <p><link href="wizardaction.html">WizardAction</link> allows to create <em>web wizards</em>, ! similar to traditional desktop wizard dialogs. A wizard has predefined sequence of states, ! and is rendered with HTML forms, containing Back, Forward, Cancel and Done pushbuttons.</p> </section> <section id="crudaction"> <title>CRUDAction: simplifies CrUD operations</title> --- 112,155 ---- </section> ! <section id="dispatcher"> ! <title>Using action dispatcher</title> ! <p>Struts Dialogs 2.0 does not use custom versions of DispatchAction class anymore. Instead, it employs ! <link href="http://issues.apache.org/bugzilla/attachment.cgi?id=17724">ParameterListActionDispatcher</link> ! class renamed to EventDispatcher. This ensures that when ParameterListActionDispatcher is included ! in Struts 1.3.x core, you won't experience problems with same class names. The dispatcher class allows ! to use any Action class to handle user events.</p> ! </section> ! ! <section id="usecases"> ! <title>Samples</title> ! <section id="dispatchevent"> ! <title>Simple dispatch</title> ! <p><code>DispatcherSampleAction</code> in <code>net.jspcontrols.dialogs.samples.dispatch</code> ! package shows how to dispatch user events to an arbitrary action class. ! An event can be sent with GET or POST, with submit button or with link. Struts Cancel button ! is supported too.</p> </section> ! <section id="logincomponent"> ! <title>Web component with two views</title> ! <p><code>LoginxxxAction</code> class in <code>net.jspcontrols.dialogs.samples.login</code> ! package shows how to create a multi-state multi-view web component.</p> </section> <section id="wizardaction"> ! <title>Robust page flow</title> ! <p><code>SignupxxxAction</code> classes in <code>net.jspcontrols.dialogs.samples.signupwizard</code> ! package show how to create a <em>web wizard</em> similar to traditional desktop wizard dialog. ! A wizard has predefined sequence of states, and is rendered with HTML forms, containing Back, ! Forward, Cancel and Done pushbuttons. This sample shows how certain states can be skipped ! depending on wizard state.</p> ! <p>Notice, that web wizard is about component state and corresponding view, not about merely ! flipping pages.</p> </section> + <!-- <section id="crudaction"> <title>CRUDAction: simplifies CrUD operations</title> *************** *** 236,239 **** --- 163,167 ---- implement handling of both item list and CRUD operations as one web component.</p> </section> + --> </section> *************** *** 247,251 **** for details.</p> ! <p>See <link href="http://www.superinterface.com/mailreader">MailReader live demo</link> to compare Struts Dialogs implementation with original Struts version.</p> </section> --- 175,179 ---- for details.</p> ! <p>See <link href="http://www.superinterface.com/mailreader">MailReader live demo</link> (version 1.x) to compare Struts Dialogs implementation with original Struts version.</p> </section> *************** *** 254,258 **** <title>Live Demos</title> <p>Each action class from Struts Dialogs library is illustrated with sample code and ! <link href="http://www.superinterface.com/strutsdialog">live demos</link>.</p> </section> --- 182,186 ---- <title>Live Demos</title> <p>Each action class from Struts Dialogs library is illustrated with sample code and ! <link href="http://www.superinterface.com/strutsdialog">live demos</link> (version 1.x).</p> </section> *************** *** 264,265 **** --- 192,199 ---- </body> </document> + + + + Top Gear isn't running on Discovery anymore because they are in the process of creating an American version of the show, with a US studio, and new hosts. + + It will be interesting to see how it comes out, I'm not very optimistic that they'll have any luck recreating the humor of the British version but at least they'll give car prices in USD :) |
From: <jm...@us...> - 2006-03-02 08:39:22
|
Update of /cvsroot/struts/struts-site/src/documentation/resources/images In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14195/src/documentation/resources/images Added Files: struts-dialog-action-2.gif struts-pre-post-action-2.gif Log Message: --- NEW FILE: struts-dialog-action-2.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: struts-pre-post-action-2.gif --- (This appears to be a binary file; contents omitted.) |
From: <jm...@us...> - 2006-02-10 08:00:05
|
Update of /cvsroot/struts/struts-site/src/documentation/content/xdocs/strutsdialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30714/src/documentation/content/xdocs/strutsdialogs Modified Files: dialogaction-logincomponentsample.xml dialogaction.xml index.xml Log Message: Index: dialogaction-logincomponentsample.xml =================================================================== RCS file: /cvsroot/struts/struts-site/src/documentation/content/xdocs/strutsdialogs/dialogaction-logincomponentsample.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** dialogaction-logincomponentsample.xml 4 Aug 2005 08:18:47 -0000 1.4 --- dialogaction-logincomponentsample.xml 10 Feb 2006 07:59:51 -0000 1.5 *************** *** 3,7 **** <document> <header> ! <title>Login Component example</title> </header> --- 3,7 ---- <document> <header> ! <title>Multi-State Login Dialog example</title> </header> *************** *** 9,18 **** <section id="overview"> <title>overview</title> ! <p>Login component is an extension of <link href="dialogaction-logindialogsample.html">login dialog</link>. It not only allows to log in, it also ! tracks user's login status. Whenever a logged-in user navigates to login component location, ! the component displays user information and allows to log out.</p> ! <p>Converting a login dialog into login component is easy. We need to track two different states of a user, and to change the mapping for result pages, because now we have two pages instead of one.</p> --- 9,18 ---- <section id="overview"> <title>overview</title> ! <p>Muliti-state and multi-view login dialog is an extension of <link href="dialogaction-logindialogsample.html">single-state login dialog</link>. It not only allows to log in, it also ! tracks user's login status. Whenever a logged-in user navigates to login dialog's location, ! the login dialog displays user information and allows to log out.</p> ! <p>Converting a single-state login dialog into multi-state login dialog is easy. We need to track two different states of a user, and to change the mapping for result pages, because now we have two pages instead of one.</p> *************** *** 26,30 **** <title>Action Class</title> ! <p>Because login component has two views instead of one, we need to override <code>getView</code> method and to return proper mapping for each user state.</p> <source> --- 26,30 ---- <title>Action Class</title> ! <p>Because new login dialog has two views instead of one, we need to override <code>getView</code> method and to return proper mapping for each user state.</p> <source> *************** *** 121,125 **** <title>Live Demo</title> ! <p><link href="http://www.superinterface.com/strutsdialog/logincomponent.html">Login Control live demo</link></p> </section> --- 121,125 ---- <title>Live Demo</title> ! <p><link href="http://www.superinterface.com/strutsdialog/logincomponent.html">Live demo of multi-state login dialog</link></p> </section> Index: dialogaction.xml =================================================================== RCS file: /cvsroot/struts/struts-site/src/documentation/content/xdocs/strutsdialogs/dialogaction.xml,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** dialogaction.xml 22 Jul 2005 01:38:00 -0000 1.6 --- dialogaction.xml 10 Feb 2006 07:59:51 -0000 1.7 *************** *** 9,19 **** <section id="overview"> <title>Overview</title> ! <p>DialogAction is an abstract <strong>Action</strong>, which is used to create ! web components and web dialogs. It is based on <link href="selectaction.html">SelectAction</link> and adds the following functionality:</p> <ul> <li>handles initialization event;</li> <li>buffers error messages;</li> ! <li>renders view corresponding to component state;</li> <li>stores state (in an action form);</li> <li>separates input and output processes (using POST-redirect-GET pattern)</li> --- 9,19 ---- <section id="overview"> <title>Overview</title> ! <p>DialogAction is an abstract <strong>Action</strong>, which is used as a web resource "code-behind" class. ! It is based on <link href="selectaction.html">SelectAction</link> and adds the following functionality:</p> <ul> <li>handles initialization event;</li> <li>buffers error messages;</li> ! <li>renders view corresponding to resource state;</li> <li>stores state (in an action form);</li> <li>separates input and output processes (using POST-redirect-GET pattern)</li> *************** *** 33,39 **** <p>DialogAction has three different modes of operation:</p> <ul> ! <li><em>component initialization</em> event prepares component for use with new set of data;</li> ! <li><em>user input</em> phase accepts input data, updates domain model, generates error messages;</li> ! <li><em>view rendering</em> phase generates a result page.</li> </ul> <!-- --- 33,39 ---- <p>DialogAction has three different modes of operation:</p> <ul> ! <li>it sets up web resourse when it receives <em>initialization event</em>;</li> ! <li>it accepts input data, updates domain model and generates error messages on <em>input</em> phase</li> ! <li>it generates a result page during <em>render</em> phase.</li> </ul> <!-- *************** *** 46,50 **** nicely corresponds to HTTP specifications, separating input and output phases by request method:</p> <ul> ! <li>browser submits input data to component using POST request;</li> <li>DialogAction accepts input and redirects browser to the location of result page;</li> <li>browser loads result page using GET request.</li> --- 46,50 ---- nicely corresponds to HTTP specifications, separating input and output phases by request method:</p> <ul> ! <li>browser submits input data using POST request;</li> <li>DialogAction accepts input and redirects browser to the location of result page;</li> <li>browser loads result page using GET request.</li> *************** *** 88,92 **** field, browser sends GET request to the server. When DialogAction receives GET request, which does not contain event parameter, it renders a page. In case of simple dialogs, this would be default view. ! In case of multi-page component, this would be a page, corresponding to current component state. The page usually contains HTML form, which accepts user data.</p> --- 88,92 ---- field, browser sends GET request to the server. When DialogAction receives GET request, which does not contain event parameter, it renders a page. In case of simple dialogs, this would be default view. ! In case of multi-page resource this would be a page, corresponding to current resource state. The page usually contains HTML form, which accepts user data.</p> *************** *** 96,105 **** <p>In case of error, the handler saves errors in the session and redirects to ! the same action. This is called <em>component reloading</em>. It does not cause infinite loop, because request for data submission has POST type, while redirected request for action ! reloading is automatically converted to GET type. GET request does not cause component reloading. Instead, when DialogAction receives GET request, it renders a view, corresponding to current ! state. The lifecycle repeats until the component decides to hand control over to another ! component, usually when user input does not contain errors.</p> <source> --- 96,105 ---- <p>In case of error, the handler saves errors in the session and redirects to ! the same action. This is called <em>resource reloading</em>. It does not cause infinite loop, because request for data submission has POST type, while redirected request for action ! reloading is automatically converted to GET type. GET request does not cause reloading. Instead, when DialogAction receives GET request, it renders a view, corresponding to current ! state. The lifecycle repeats until the resource decides to hand control over to another ! resource, usually when user input does not contain errors.</p> <source> *************** *** 111,120 **** </source> ! <p>If no errors were detected and action can render a view for new component state, ! then component can either reload itself, or hand control over to another action. Redirection is a preferred way to hand over the control to prevent double submit issues. ! DialogAction has default mapping name, used for component reloading: "DIALOG-RELOAD".</p> ! <p>When a user refreshes a page, component reloads itself, and displays a view appropriate to its state. This implies that application state must be stored on server between requests. The view is rendered by <code>getView</code> method. For a simple web dialog, which has only one --- 111,120 ---- </source> ! <p>If no errors were detected and action can render a view for new resource state, ! then resource can hand control over to another action. Redirection is a preferred way to hand over the control to prevent double submit issues. ! DialogAction has default mapping name, used for resource reloading: "DIALOG-RELOAD".</p> ! <p>When a user refreshes a page, DialogAction reloads itself, and displays a view appropriate to its state. This implies that application state must be stored on server between requests. The view is rendered by <code>getView</code> method. For a simple web dialog, which has only one *************** *** 123,149 **** mapping. See example above.</p> ! <p>Do not use redirection for a view. If you create more complex web component with several views, you need to override <code>getView</code> method and return a proper ! mapping for each component state.</p> ! <p>DialogAction has an option to reset the component when it receives new portion of data submitted with POST request. POST request method signals that browser submits new ! data instead of loading existing information. But sometimes component has to be reset with GET method, if it is navigated using hyperlink. DialogAction needs to distinguish these situations:</p> <ul> ! <li>reset component and fill it with new data;</li> ! <li>navigate to component using a "clean" link;</li> ! <li>refresh a component explicitly;</li> ! <li>automatically reload a component as the second phase of input processing.</li> </ul> ! <p>DialogAction uses event parameter as flag for component that it can be reset. ! Three other situations: "clean" linking, refreshing and component reloading are treated the same, because request does not contain event parameter in all three cases. In these ! cases DialogAction renders a view, corresponding to current component state.</p> ! <p>In plain words the above means that navigating to a component via link, which does not ! have event key as query parameter, displays current state of component but does not initialize ! it. See live demos for details, and pay attention to component URLs.</p> </section> --- 123,149 ---- mapping. See example above.</p> ! <p>Do not use redirection for a view. If you create more complex web resource with several views, you need to override <code>getView</code> method and return a proper ! mapping for each resource state.</p> ! <p>DialogAction has an option to reset the resource when it receives new portion of data submitted with POST request. POST request method signals that browser submits new ! data instead of loading existing information. But sometimes resource has to be reset with GET method, if it is navigated using hyperlink. DialogAction needs to distinguish these situations:</p> <ul> ! <li>reset resource and fill it with new data;</li> ! <li>navigate to resource using a "clean" link;</li> ! <li>refresh a resource explicitly;</li> ! <li>automatically reload a resource as the second phase of input processing.</li> </ul> ! <p>DialogAction uses event parameter as flag for resource that it can be reset. ! Three other situations: "clean" linking, refreshing and resource reloading are treated the same, because request does not contain event parameter in all three cases. In these ! cases DialogAction renders a view, corresponding to current resource state.</p> ! <p>In plain words the above means that navigating to a resource via link, which does not ! have event key as query parameter, displays current state of resource but does not initialize ! it. See live demos for details, and pay attention to resource URLs.</p> </section> *************** *** 163,169 **** <p>The following examples show how DialogAction can be used:</p> <ul> ! <li><link href="dialogaction-logindialogsample.html">Login Dialog</link></li> ! <li><link href="dialogaction-logincomponentsample.html">Login Component</link></li> <li><link href="dialogaction-logincontrolsample.html">Login Control</link></li> </ul> </section> --- 163,171 ---- <p>The following examples show how DialogAction can be used:</p> <ul> ! <li><link href="dialogaction-logindialogsample.html">Single-state Dialog</link></li> ! <li><link href="dialogaction-logincomponentsample.html">Multi-state Dialog</link></li> ! <!-- <li><link href="dialogaction-logincontrolsample.html">Login Control</link></li> + --> </ul> </section> Index: index.xml =================================================================== RCS file: /cvsroot/struts/struts-site/src/documentation/content/xdocs/strutsdialogs/index.xml,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** index.xml 18 Nov 2005 00:34:15 -0000 1.17 --- index.xml 10 Feb 2006 07:59:51 -0000 1.18 *************** *** 24,29 **** <li><strong>Easier configuration</strong> - improved request/response cycle is controlled with less XML markup and fewer Java classes.</li> - <li><strong>Component development</strong> - either standalone or visually embedded components - without portal engine and portlet API.</li> <li><strong>Web Wizards</strong> - controlled flow of web pages for a given web resource, similar to traditional desktop wizard dialogs.</li> --- 24,27 ---- *************** *** 134,137 **** --- 132,136 ---- </section> + <!-- <section id="components"> <title>Component Development</title> *************** *** 176,180 **** <link href="http://www.superinterface.com/strutsdialog/logincontrol.html">login control</link>.</p> </section> ! <section id="actions"> <title>Actions</title> --- 175,179 ---- <link href="http://www.superinterface.com/strutsdialog/logincontrol.html">login control</link>.</p> </section> ! --> <section id="actions"> <title>Actions</title> |
From: <fza...@us...> - 2005-12-29 00:43:40
|
Update of /cvsroot/struts/struts-site/src/documentation/content/xdocs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10592/src/documentation/content/xdocs Modified Files: news.xml Log Message: Index: news.xml =================================================================== RCS file: /cvsroot/struts/struts-site/src/documentation/content/xdocs/news.xml,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** news.xml 17 Dec 2005 05:33:21 -0000 1.9 --- news.xml 29 Dec 2005 00:43:33 -0000 1.10 *************** *** 14,17 **** --- 14,24 ---- <link href="guidelines.html">guidelines</link>. </p> + <section id="ajaxchat-1.2"> + <title>AjaxChat v1.2 now available</title> + <p> + Just a minor fix, the web.xml DTD reference was to version 2.2 instead + of the correct 2.3. + </p> + </section> <section id="ajaxchat-1.1"> <title>AjaxChat v1.1 now available</title> |
From: <fza...@us...> - 2005-12-29 00:43:40
|
Update of /cvsroot/struts/struts-site/src/documentation/content/xdocs/ajaxchat In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10592/src/documentation/content/xdocs/ajaxchat Modified Files: index.xml Log Message: Index: index.xml =================================================================== RCS file: /cvsroot/struts/struts-site/src/documentation/content/xdocs/ajaxchat/index.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** index.xml 17 Dec 2005 05:33:20 -0000 1.5 --- index.xml 29 Dec 2005 00:43:32 -0000 1.6 *************** *** 31,34 **** --- 31,41 ---- <title>What's New</title> <section> + <title>v1.2 now available!</title> + <p> + 12/28/2005 - Just a minor fix, the web.xml DTD reference was to + version 2.2 instead of the correct 2.3. + </p> + </section> + <section> <title>v1.1 now available!</title> <p> |
From: <fza...@us...> - 2005-12-29 00:24:02
|
Update of /cvsroot/struts/ajaxchat/WEB-INF/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6940/WEB-INF/src Modified Files: build.xml Log Message: Index: build.xml =================================================================== RCS file: /cvsroot/struts/ajaxchat/WEB-INF/src/build.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** build.xml 17 Dec 2005 05:24:56 -0000 1.4 --- build.xml 29 Dec 2005 00:23:53 -0000 1.5 *************** *** 10,14 **** <property name="javadocs" value="javadocs" /> <!-- "project_version" is, obviously, the version of the app! --> ! <property name="project_version" value="1.1" /> <!-- "proxy_host" is the address of the proxy server that will be --> <!-- used to download dependencies, if a proxy is required on your --> --- 10,14 ---- <property name="javadocs" value="javadocs" /> <!-- "project_version" is, obviously, the version of the app! --> ! <property name="project_version" value="1.2" /> <!-- "proxy_host" is the address of the proxy server that will be --> <!-- used to download dependencies, if a proxy is required on your --> |
From: <fza...@us...> - 2005-12-29 00:09:10
|
Update of /cvsroot/struts/ajaxchat/WEB-INF/classes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4314/WEB-INF/classes Modified Files: app_resources_en.properties Log Message: Index: app_resources_en.properties =================================================================== RCS file: /cvsroot/struts/ajaxchat/WEB-INF/classes/app_resources_en.properties,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** app_resources_en.properties 17 Dec 2005 05:24:56 -0000 1.4 --- app_resources_en.properties 29 Dec 2005 00:09:02 -0000 1.5 *************** *** 1,3 **** ! app.version=Version 1.1 messages.usernameBlank=There is a problem with the Username you entered - You must enter a Username messages.usernameContainsComma=There is a problem with the Username you entered - Username cannot contain commas (,) --- 1,3 ---- ! app.version=Version 1.2 messages.usernameBlank=There is a problem with the Username you entered - You must enter a Username messages.usernameContainsComma=There is a problem with the Username you entered - Username cannot contain commas (,) |
From: <fza...@us...> - 2005-12-29 00:09:09
|
Update of /cvsroot/struts/ajaxchat/WEB-INF/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4314/WEB-INF/src Modified Files: history.txt Log Message: Index: history.txt =================================================================== RCS file: /cvsroot/struts/ajaxchat/WEB-INF/src/history.txt,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** history.txt 17 Dec 2005 05:12:46 -0000 1.4 --- history.txt 29 Dec 2005 00:09:02 -0000 1.5 *************** *** 1,2 **** --- 1,8 ---- + v1.2 + 12/28/2005 + ---------- + * Fixed DTD version reference in web.xml to avoid validation failures (thanks + Wendy!) + v1.1 12/17/2005 |
From: <fza...@us...> - 2005-12-29 00:07:59
|
Update of /cvsroot/struts/ajaxchat/WEB-INF In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4087/WEB-INF Modified Files: web.xml Log Message: Index: web.xml =================================================================== RCS file: /cvsroot/struts/ajaxchat/WEB-INF/web.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** web.xml 30 Nov 2005 22:04:25 -0000 1.2 --- web.xml 29 Dec 2005 00:07:51 -0000 1.3 *************** *** 1,5 **** <?xml version="1.0" encoding="ISO-8859-1"?> ! <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> --- 1,5 ---- <?xml version="1.0" encoding="ISO-8859-1"?> ! <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"> <web-app> |
From: <fza...@us...> - 2005-12-17 05:33:29
|
Update of /cvsroot/struts/struts-site/src/documentation/content/xdocs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24150/src/documentation/content/xdocs Modified Files: news.xml Log Message: Index: news.xml =================================================================== RCS file: /cvsroot/struts/struts-site/src/documentation/content/xdocs/news.xml,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** news.xml 5 Dec 2005 05:33:26 -0000 1.8 --- news.xml 17 Dec 2005 05:33:21 -0000 1.9 *************** *** 14,17 **** --- 14,24 ---- <link href="guidelines.html">guidelines</link>. </p> + <section id="ajaxchat-1.1"> + <title>AjaxChat v1.1 now available</title> + <p> + This corrects an issue seen under certain circumstances with IE + having to do with caching of AJAX requests. + </p> + </section> <section id="ajaxchat-1.0"> <title>AjaxChat v1.0 now available</title> |
From: <fza...@us...> - 2005-12-17 05:33:28
|
Update of /cvsroot/struts/struts-site/src/documentation/content/xdocs/ajaxchat In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24150/src/documentation/content/xdocs/ajaxchat Modified Files: index.xml Log Message: Index: index.xml =================================================================== RCS file: /cvsroot/struts/struts-site/src/documentation/content/xdocs/ajaxchat/index.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** index.xml 5 Dec 2005 05:33:26 -0000 1.4 --- index.xml 17 Dec 2005 05:33:20 -0000 1.5 *************** *** 31,34 **** --- 31,47 ---- <title>What's New</title> <section> + <title>v1.1 now available!</title> + <p> + 12/17/2005 - This release corrects a problem seen under certain + circumstances in Internet Explorer where the browser would cache + an AJAX request, and subsequent requests would get the document + stored in the cache. This is corrected with a dummy request + parameter appended to all AJAX calls (except the one to post + messages to a room) which makes the URL unique for every call, + and hence IE does not cache them (or more precisely, it probably + does, but we force it to not pull from the cache). + </p> + </section> + <section> <title>v1.0 now available!</title> <p> |
From: <fza...@us...> - 2005-12-17 05:25:06
|
Update of /cvsroot/struts/ajaxchat/WEB-INF/classes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23112/WEB-INF/classes Modified Files: app_resources_en.properties Log Message: Index: app_resources_en.properties =================================================================== RCS file: /cvsroot/struts/ajaxchat/WEB-INF/classes/app_resources_en.properties,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** app_resources_en.properties 17 Dec 2005 05:12:46 -0000 1.3 --- app_resources_en.properties 17 Dec 2005 05:24:56 -0000 1.4 *************** *** 1,3 **** ! app.version=1.1 messages.usernameBlank=There is a problem with the Username you entered - You must enter a Username messages.usernameContainsComma=There is a problem with the Username you entered - Username cannot contain commas (,) --- 1,3 ---- ! app.version=Version 1.1 messages.usernameBlank=There is a problem with the Username you entered - You must enter a Username messages.usernameContainsComma=There is a problem with the Username you entered - Username cannot contain commas (,) |
From: <fza...@us...> - 2005-12-17 05:25:06
|
Update of /cvsroot/struts/ajaxchat/WEB-INF/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23112/WEB-INF/src Modified Files: build.xml Log Message: Index: build.xml =================================================================== RCS file: /cvsroot/struts/ajaxchat/WEB-INF/src/build.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** build.xml 5 Dec 2005 04:57:52 -0000 1.3 --- build.xml 17 Dec 2005 05:24:56 -0000 1.4 *************** *** 10,14 **** <property name="javadocs" value="javadocs" /> <!-- "project_version" is, obviously, the version of the app! --> ! <property name="project_version" value="1.0" /> <!-- "proxy_host" is the address of the proxy server that will be --> <!-- used to download dependencies, if a proxy is required on your --> --- 10,14 ---- <property name="javadocs" value="javadocs" /> <!-- "project_version" is, obviously, the version of the app! --> ! <property name="project_version" value="1.1" /> <!-- "proxy_host" is the address of the proxy server that will be --> <!-- used to download dependencies, if a proxy is required on your --> |
From: <fza...@us...> - 2005-12-17 05:12:55
|
Update of /cvsroot/struts/ajaxchat/WEB-INF/classes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21536/WEB-INF/classes Modified Files: app_resources_en.properties Log Message: Index: app_resources_en.properties =================================================================== RCS file: /cvsroot/struts/ajaxchat/WEB-INF/classes/app_resources_en.properties,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** app_resources_en.properties 30 Nov 2005 22:04:26 -0000 1.2 --- app_resources_en.properties 17 Dec 2005 05:12:46 -0000 1.3 *************** *** 1,3 **** ! app.version=1.0 Alpha 2 messages.usernameBlank=There is a problem with the Username you entered - You must enter a Username messages.usernameContainsComma=There is a problem with the Username you entered - Username cannot contain commas (,) --- 1,3 ---- ! app.version=1.1 messages.usernameBlank=There is a problem with the Username you entered - You must enter a Username messages.usernameContainsComma=There is a problem with the Username you entered - Username cannot contain commas (,) |
From: <fza...@us...> - 2005-12-17 05:12:55
|
Update of /cvsroot/struts/ajaxchat/WEB-INF/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21536/WEB-INF/src Modified Files: history.txt Log Message: Index: history.txt =================================================================== RCS file: /cvsroot/struts/ajaxchat/WEB-INF/src/history.txt,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** history.txt 5 Dec 2005 04:57:52 -0000 1.3 --- history.txt 17 Dec 2005 05:12:46 -0000 1.4 *************** *** 1,2 **** --- 1,16 ---- + v1.1 + 12/17/2005 + --------- + * Added a dummy parameter to all AJAX requests except for posting a message + to a room that ensures the URL is always unique. This is done to deal with + how IE caches responses when configured to automatically check for new + versions of stored pages. + * Updated version number in the resource bundle. It was listed as alpha 2 in + the last release, v1.0. + * Modified logging throughout. Basically, most things are now logged at + debug level and are wrapped in code guards. This is, to be honest, done + mostly to make it easier to deploy it for the live demo with my host (they + had a problem with the degree of logging previously). + v1.0 12/5/2005 |
From: <fza...@us...> - 2005-12-17 05:12:55
|
Update of /cvsroot/struts/ajaxchat In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21536 Modified Files: lobby.jsp room.jsp Log Message: Index: lobby.jsp =================================================================== RCS file: /cvsroot/struts/ajaxchat/lobby.jsp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** lobby.jsp 30 Nov 2005 22:31:58 -0000 1.3 --- lobby.jsp 17 Dec 2005 05:12:46 -0000 1.4 *************** *** 14,17 **** --- 14,25 ---- /** + * This variable holds a value that is incremented with each request made. + * The value is appended to the requested URL so that the URL is always + * unique. This is done to get around some caching issues with IE. + */ + assureUnique = 1; + + + /** * This is the XMLHttpRequest object that is used to service this page * to update the stats (how many users are chatting in each room. *************** *** 77,82 **** // any events the instance fires. xhrLobbyUpdateStats.onreadystatechange = lobbyUpdateStatsHandler; ! // Set the target URI for the request. ! target = "<html:rewrite action="ajaxLobbyUpdateStats" />"; // One minor problem that if (sendAJAXRequest) { --- 85,93 ---- // any events the instance fires. xhrLobbyUpdateStats.onreadystatechange = lobbyUpdateStatsHandler; ! // Set the target URI for the request. Note that we append a ! // value that will ensure that the URL is always unique. ! // This is to deal with caching issues in IE. ! target = "<html:rewrite action="ajaxLobbyUpdateStats" />" + ! "?assureUnique=" + assureUnique++; // One minor problem that if (sendAJAXRequest) { Index: room.jsp =================================================================== RCS file: /cvsroot/struts/ajaxchat/room.jsp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** room.jsp 30 Nov 2005 22:31:58 -0000 1.3 --- room.jsp 17 Dec 2005 05:12:46 -0000 1.4 *************** *** 14,17 **** --- 14,28 ---- /** + * These variables hold a value that is incremented with each request made. + * The value is appended to the requested URL so that the URL is always + * unique. This is done to get around some caching issues with IE. + * Note that the AJAX request to post of message DOES NOT need this + * because it is a POST, which is always unique. + */ + assureUniqueUsersInRoom = 1; + assureUniqueGetMessages = 1; + + + /** * This is the size of the font in the chat scroll. It is adjustable * between 8 and 48 using the magnification icons. Note that affects both *************** *** 100,105 **** // any events the instance fires. xhrListUsersInRoom.onreadystatechange = listUsersInRoomHandler; ! // Set the target URI for the request. ! target = "<html:rewrite action="ajaxListUsersInRoom" />"; // Go ahead and fire off the request, no payload to send. xhrListUsersInRoom.open("get", target, true); --- 111,119 ---- // any events the instance fires. xhrListUsersInRoom.onreadystatechange = listUsersInRoomHandler; ! // Set the target URI for the request. Note that we append a ! // value that will ensure that the URL is always unique. ! // This is to deal with caching issues in IE. ! target = "<html:rewrite action="ajaxListUsersInRoom" />" + ! "?assureUnique=" + assureUniqueUsersInRoom++; // Go ahead and fire off the request, no payload to send. xhrListUsersInRoom.open("get", target, true); *************** *** 169,174 **** // any events the instance fires. xhrGetMessages.onreadystatechange = getMessagesHandler; ! // Set the target URI for the request. ! target = "<html:rewrite action="ajaxGetMessages" />"; // Go ahead and fire off the request, no payload to send. xhrGetMessages.open("get", target, true); --- 183,191 ---- // any events the instance fires. xhrGetMessages.onreadystatechange = getMessagesHandler; ! // Set the target URI for the request. Note that we append a ! // value that will ensure that the URL is always unique. ! // This is to deal with caching issues in IE. ! target = "<html:rewrite action="ajaxGetMessages" />" + ! "?assureUnique=" + assureUniqueGetMessages++; // Go ahead and fire off the request, no payload to send. xhrGetMessages.open("get", target, true); |
From: <fza...@us...> - 2005-12-05 05:33:38
|
Update of /cvsroot/struts/struts-site/src/documentation/content/xdocs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21682/src/documentation/content/xdocs Modified Files: news.xml Log Message: Index: news.xml =================================================================== RCS file: /cvsroot/struts/struts-site/src/documentation/content/xdocs/news.xml,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** news.xml 1 Dec 2005 20:03:25 -0000 1.7 --- news.xml 5 Dec 2005 05:33:26 -0000 1.8 *************** *** 14,19 **** <link href="guidelines.html">guidelines</link>. </p> <section id="ajaxchat-1.0alpa2"> ! <title>AjaxChat v1.0 alpha 2 now available Struts Apps</title> <p> Yes, it's alpha, but it's solid as far as I know :) --- 14,31 ---- <link href="guidelines.html">guidelines</link>. </p> + <section id="ajaxchat-1.0"> + <title>AjaxChat v1.0 now available</title> + <p> + Yep, the final, official 1.0 release! Enjoy! + </p> + </section> <section id="ajaxchat-1.0alpa2"> ! <title>AjaxChat v1.0 alpha 2 now available</title> ! <p> ! A few things came up, but are now corrected. ! </p> ! </section> ! <section id="ajaxchat-1.0alpha"> ! <title>AjaxChat v1.0 alpha now available</title> <p> Yes, it's alpha, but it's solid as far as I know :) |