RE: Theoretical debate

2004-06-19 Thread Mike Duffy
Thanks for a very interesting thread.

An elucidation of many of the topics in this thread can be found in Ted Husted's book, 
Struts in
Action; especially see chapter 5, Coping with Action Forms.

It is very tempting when you first come to Struts to do a great deal of processing in 
the Action
classes, especially if the application is simple.  However, this approach is not 
optimal for the
long term.

We try to keep our Action classes as thin as possible. The Action classes are used 
primarily as
controllers; business logic processing takes place in worker classes or factory 
classes. Also, we
use our business model classes simply as data transfer objects to pass data between 
different
components of the system. This is contrary to pure object-oriented design (i.e., 
objects have both
state and behavior); however, this approach leads to a more modular and extensible 
system (many
components can act on the same business model data).

There have been other threads in this newsgroup discussing the pros and cons of Struts 
vs JSF. 
There is definitely overlap in the two frameworks with JSF going beyond Struts to 
create a
component model that can be applied to the web.  

In my judgment, the promise of JSF will be realized when advanced tools greatly simply 
the process
of creating applications.  The Sun Java Studio Creator
(http://wwws.sun.com/software/products/jscreator/), formerly known as Project Rave, 
will be
worth evaluating.  Actually, if Sun gets this right, it will be incredibly cool.

If we knew the inside game at Sun, I think the story would be that they decided to 
develop a
system to compete against the MS Visual Studio tools, and in making that decision they 
realized
they needed a robust, extensible framework. JSF is being created for the Sun Java 
Studio
Creator.  Hopefully, this will be good for us all. 

Mike


--- Pilgrim, Peter [EMAIL PROTECTED] wrote:
 
  -Original Message-
  From: mike [mailto:[EMAIL PROTECTED]
  Sent: 18 June 2004 15:31
  To: Struts Users Mailing List; [EMAIL PROTECTED]
  Subject: Re: Theoretical debate
  
  
  At 07:18 AM 6/18/2004, Bill Schneider wrote:
  
  Form beans can be thought of as a special case of DTOs: they are the 
  argument the client (web browser) passes to the remote 
  method call (HTTP 
  POST).  So passing form beans directly to business logic is _almost_ 
  reasonable, putting the dependency issue aside for now (form 
  beans have to 
  extend ActionForm).
  
  The difference is, form beans are a model of the /user 
  input/, and since 
  there may be invalid inputs (for example: asdfjkjkd in a 
  field that's 
  supposed to be numeric) form bean fields often need to be 
  Strings when the 
  corresponding field in a real DTO would be a Date or Integer.
  
  To deal with this, I've used a tool called XSnapshot (just 
  released to 
  SourceForge: http://xsnapshot.sourceforge.net) to generate 
  form beans and 
  other DTOs from XDoclet tags in a POJO data model.  That way you get 
  _both_ real DTOs and Form Beans without writing all the 
  classes by hand, 
  and you can copy between DTOs and form beans with 
  BeanUtils.copyProperties.
  
  -- Bill
  --
  Bill Schneider
  Chief Architect
  
  I don't think we should be thinking of action forms as DTOs.  
  DTOs or VOs 
  have a special use and a special problem that they are meant to 
  solve.  Action forms are related to an entirely different set 
  of issues 
  about data farming.  I don't think we can put the dependency issue 
  aside.  That is really the whole point of frameworks like 
  Struts.  If you 
  can put the dependency issues aside, you probably don't need 
  Struts.  If 
  you don't need a hammer, that is not a critique of a hammer.  
  Likewise, 
  Struts has an objective and, with clear areas that could be 
  improved, does 
  that really well.  There is a good reason that Struts is so 
  successful.  Craig is a sweetheart, but that is not the 
  reason for the 
  success of Struts.
  
  I think that a lot of the problems people have with 
  repetitive programming 
  is not the fault of the framework but the failure to use 
  coding techniques 
  that are readily available, such as dynamic proxies.
  
  Michael
  
  
 
 Yes I could not agree more. This why Commons BeanUtils 
 and PropertyUtils was invented. It sound like people
 have an itch for a mapping properties that converts
 ActionForm (Dyna also) to a Value Object. Convert me X into Y whilst
 copying the attributes as best I can from X to Y.
 Sounds like a very old OO problem: Morphing Eclispe into 
 Round Rectangle into a Triangle. I wonder.
 
 
 --
 Peter Pilgrim
 Operations/IT - Credit Suisse First Boston, 
 10 South Colonnade, London E14 4QJ, United Kingdom
 Tel: +44 (0)207 883 4447
 
 ==
 This message is for the sole use of the intended recipient. If you received
 this message in error please delete it and notify us. If this message 

Re: bean defines

2004-06-19 Thread Chris Cranford
Is anyone familiar with this that can help?

- Original Message -
From: Chris Cranford [EMAIL PROTECTED]
To: Struts Users Mailing List [EMAIL PROTECTED]
Sent: Friday, June 18, 2004 3:47 PM
Subject: Re: bean defines


 And it may be important that I point out if I use:
 bean:write name=%=formBean% property=pageNumber/

 The value does get outputted.  So it has to do with what Paul pointed out,
 but I dont know how to solve it.
 - Original Message -
 From: Chris Cranford [EMAIL PROTECTED]
 To: Struts Users Mailing List [EMAIL PROTECTED]
 Sent: Friday, June 18, 2004 3:45 PM
 Subject: Re: bean defines


  It is as if the c-taglib is seeing the bean as a string and not as an
  ActionForm.  I can write:
  c:out value=${cfb}/
 
  And the output is value in formid.  What I'm trying to do is create a
  reference to an ActionForm in this JSP which has it's name passed in by
 this
  page's container as a tiles attribute.
 
  - Original Message -
  From: Chris Cranford [EMAIL PROTECTED]
  To: Struts Users Mailing List [EMAIL PROTECTED]
  Sent: Friday, June 18, 2004 3:39 PM
  Subject: Re: bean defines
 
 
   This is my class:
  
   public class PagedCheckboxForm extends ActionForm
   {
   private long pageNumber;
   public long getPageNumber() { return this.pageNumber; }
   public void setPageNumber(long value) { this.pageNumber = value; }
   }
  
   In the JSP
   bean:define id=formBeantiles:getAsString
  name=formid//bean:define
   set var=cfb scope=page%=formBean%/c:set
   The Page Number: c:out value=${cfb.pageNumber} /
  
   [ServletException in: /pages/cctest-body.jsp]
   An error occured while evaluating custom action attribute value with
  value
   ${cfb.pageNumber}:
   Unable to find a value for pageNumber in object of class
   java.lang.String using operator . (null)
  
   HTH
   Chris
  
   - Original Message -
   From: Slattery, Tim - BLS [EMAIL PROTECTED]
   To: 'Struts Users Mailing List' [EMAIL PROTECTED]
   Sent: Friday, June 18, 2004 3:33 PM
   Subject: RE: bean defines
  
  
 Ok, well if I do the following:
 c:set var=cfb value=${formBean}/
 c:out value=${cfb}/

 The name of the form object is written out.  But if I want to
 access a property on my form cfb, how would I output that
 value?  If I write c:out value=${cfb.pageNumber}/, I get
 a servlet exception saying that it is unable to find
 pageNumber in object of class java.lang.String
   
Do you have a getter function for the pageNumber property? A method
  within
the cfb object that looks like this:
   
public String getPageNumber()
{
 return somethingor0ther;
}
   
   
--
Tim Slattery
[EMAIL PROTECTED]
   
   
  
 -
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
   
   
  
  
  
   -
   To unsubscribe, e-mail: [EMAIL PROTECTED]
   For additional commands, e-mail: [EMAIL PROTECTED]
  
  
 
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 



 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]





-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How To Get the 'initial' in the form-property?

2004-06-19 Thread Bill Siggelkow
Hmm .. in your Action's execute method you should be able to do:
DynaValidatorForm myForm = (DynaValidatorForm) form;
String sort = myForm.get(sort);
String order = myForm.get(order);
This will get the current values on the form -- if the form was just 
created than these will be the initial values.

If you need to reset a DynaActionForm (or subclass) to its initial 
values you can the initialize method:

myForm.initialize(mapping);

Caroline Jen wrote:
In my struts-config.xml, I provided some initial
values:
 form-bean
name=threadForm
  
type=org.apache.struts.validator.DynaValidatorForm
  form-property
name=sort
initial=thread_last_post_date
type=java.lang.String/
  form-property
name=order
initial=DESC
type=java.lang.String/
/form-bean

How do I get the initial value in my servlet that
extends Action?
I tried:
form.get( sort );
form.get( order );
and 

form.getProperty( sort );
form.getProperty( order );
The compiler complains cannot resolve symbol: method
get and cannot resolve symbol: method getProperty.
__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: bean defines

2004-06-19 Thread Bill Siggelkow
Chris, your running into the problem because when you use bean:define 
where the value is specified in the body of that tag, it create a new 
String scripting variable as well as a page-scoped attribute that is 
also a String.

Instead, you want the actual form bean itself. I am not too sure about 
how tiles fits into the mix but for a normal action mapping where the 
form was specified as MyForm in the name attribute you could simply do 
the following:

The Page Number: c:out value=${MyForm.pageNumber} /
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Detecting browser close

2004-06-19 Thread ksitron
Is there a way to detect when the user closes the browser.
What I want to do is do clean-up and destroy the session.
Thanks in advance.
--


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


[OT] JavaOne Struts User Gathering

2004-06-19 Thread Van Riper, Mike
Hi Everyone,

Depending upon the interest level, I'm willing to organize a social
gathering at a bar or restaurant in San Francisco during the upcoming
JavaOne conference. It would either be around 8:30pm on Sunday, June 27th,
after the Welcome Reception ends. Or it would be around 8:00PM on Thursday,
July 1st, at the very end of the conference.

It would be separate from JavaOne, but, somewhere not too far from Moscone.
That way, anyone attending the conference and local folks that aren't
attending the conference could both participate. If this is something you
would participate in, please email directly to me (no need to spam the
struts-user list with count-me-in messages) at [EMAIL PROTECTED] with
the subject JavaOne Struts User Gathering.

Whatever I decide upon, I'll announce it again here on the mailing list.
However, your responses to me now will give me an indication of size of
venue required for the gathering. I will choose between Sunday and Thursday
evening based upon the preferences I get back from the people that contact
me.

Also, I am not that familiar with our options in the city. So, I would
appreciate recommendations for local bars/restaurants that would be a good
venue for this gathering. Besides being big enough for the expected number
of people, I'm looking for a place with good *beer* and at least some decent
food options too.

Thanks, Van

Mike Van Riper
Silicon Valley Struts User Group
http://www.baychi.org/bof/struts/

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Detecting browser close

2004-06-19 Thread ksitron
Thanks for the reply. But, I find it hard to accept that it can't be done.
And, users may not be computer savy  or follow good etiquette and log off.
Bill Siggelkow wrote:
AFAIK this cannot be done -- your best bet is to provide a Logoff link 
and a reasonable session timeout.

ksitron wrote:
Is there a way to detect when the user closes the browser.
What I want to do is do clean-up and destroy the session.
Thanks in advance.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

--
Kevin J Citron
Sr. Object Imagineer
Optimized Objects, Inc.
EL Paso, Texas 79930
(915) 565-7785/566-2403

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: bean defines

2004-06-19 Thread Chris Cranford
Bill -

The point of my discussion was the following premise:

public class MyCheckboxForm extends ActionForm
public class MyForm1 extends MyCheckboxForm
public class MyForm2 extends MyCheckboxForm

I want to be able to pass MyForm1 or MyForm2 to the same JSP and have it
work because the JSP is only concerned with the contents within
MyCheckboxForm, but I dont think I can do this, at least not cleanly.

So what I have considered is the following alternative:
public class MyForm1 extends ActionForm
public class MyForm2 extends ActionForm
public class MyCheckboxForm extends ActionForm

Then, when MyForm1 is posted to my action, it will instantiate a
MyCheckboxForm object in the request scope, transfer the MyForm1 object from
request to session scope for later retreival and note the bean name in the
MyCheckboxForm.  Populate the needed data from MyForm1 into MyCheckboxForm
and finally forward to this common JSP.  This JSP will do its thing and
finally posts its data back to an action with a flag that says, we're done,
transfer data back.

The MyCheckboxForm contains the bean-name of MyForm1 which was in the
session scope, the action retreives it, transfers the data from the
MyCheckboxForm back into MyForm1, updating it accordingly and then removes
the session-scope MyForm1 and puts it back into the request scope forwarding
the user to the final JSP which renders the changes made by the checkbox
logic.

The point is we want to have a single form which we can manipulate
label/value(s) via checkbox selection and pagination.  Once the user have
selected save/return, the data of all their selections gets passed back to
the original form which will later be used for a search query.

Like I said, I think what I decided on as an alternative seems to be a much
cleaner and easier approach as it removes any ties between the forms
themselves and really lets the core logic of the checkbox form stand alone
for usability for any other future purpose.

Thanks in advance!
Chris

- Original Message -
From: Bill Siggelkow [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Saturday, June 19, 2004 3:22 PM
Subject: Re: bean defines


 Chris, your running into the problem because when you use bean:define
 where the value is specified in the body of that tag, it create a new
 String scripting variable as well as a page-scoped attribute that is
 also a String.

 Instead, you want the actual form bean itself. I am not too sure about
 how tiles fits into the mix but for a normal action mapping where the
 form was specified as MyForm in the name attribute you could simply do
 the following:

 The Page Number: c:out value=${MyForm.pageNumber} /




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Detecting browser close

2004-06-19 Thread mike
There are ways, if you are so adamant about this that you want to use a lot 
of resources.  Are you?

At 04:53 PM 6/19/2004, Bill Siggelkow wrote:
AFAIK this cannot be done -- your best bet is to provide a Logoff link and 
a reasonable session timeout.

ksitron wrote:
Is there a way to detect when the user closes the browser.
What I want to do is do clean-up and destroy the session.
Thanks in advance.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: Struts 1.0.2 Dynamic Forward

2004-06-19 Thread bmcgovern2004
Rick,
   Sorry if I the problem def I supplied wasn't complete enough.  I 
was trying to avoid keyboard diarrhea. I'm sure that I'm making this 
more difficult than it need be. :-)
   I have a number of mappings.  Each with its own unique action, 
form, and set of forwards comprising the jsp screens of a use case.  
All actions extend a base action.  All forms extend a base form.  
   Based on the data situation in any action, I may need to present a 
common data entry page.  This need could occur in any of the use 
cases.
   I've defined the common data entry page as its own mapping with 
its own unique form and path.
   Struts supplies me with a mapping and a form.   I'm confused as to 
how I can switch to the common data entry page mapping while 
prepoulating its form with data taken from the form of the invoked 
action.--- In [EMAIL PROTECTED], Rick Reumann [EMAIL PROTECTED] 
wrote:
 Can you be a little more specific about what you want to accomplish 
from 
 a user's perspective. You might be making this more complicated 
than 
 it needs to be. In other words what exactly do you want to have 
 happen... A user selects something from a drop down list... and 
then 
 what? I just think we can work out something that might be a lot 
easier 
 and cleaner.
 
 -- 
 Rick
 
 
-
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]