Re: [WEB-SERVICES ]

2006-05-23 Thread Mike Elliott

On 5/23/06, temp temp [EMAIL PROTECTED] wrote:

Web services.  How web services are written in java. Are there any 
tutorials to understand the  concept of web services?


What particular kind of a web service did you have in mind?  You
mentioned Enterprise Java Beans.  Those are not a web service but
might be part of some middleware used by a web service.  If you can
give us an example, perhaps we can help.

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



Re: Iterate over list in in list in form bean.

2005-07-18 Thread Mike Elliott
On 7/13/05, Jörg Eichhorn [EMAIL PROTECTED] wrote:

 thanks for the hint and example. I've choosen the nested way to do this,
 because i
 think this makes the jsp code more readable.
 
 I there a way to do the same using request scope?
 When i do this i get an exception because the collection is not re-filled
 anymore.

This is the same question I have, but of course I'm a week late in
asking it.  However, I noticed that no one answered  Jörg's version so
I'll ask it again:

  Is there a way to do the same using request scope?

I've been beating my head against this all weekend to no avail.  I
understand how to do this in session scope, but don't know if it's
even possible in request scope.

As I understand things (which may be wrong), when the form is
submitted (in request scope) a new form bean is created and populated
with the values in the collection from the HTML form.  But, of course,
a newly created form won't know how many elements are in the form so
it can't pre-populate the collection with beans to be filled in. 
Right?  So following this path leads to wailing, lamentation, gnashing
of teeth, rending of clothes and utter frustration.  Right?

If there is simply no way to do this, I'd really appreciate someone
letting me know so that I'm put out of my misery.  And, if someone
could suggest a workaround, I'd be most welcome.

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



Re: Iterate over list in in list in form bean.

2005-07-18 Thread Mike Elliott
 Well I could see for large forms with nested data it might not be a
 great idea to keep these around in the Session. I 'try' to stick to
 using the Request when I can but I don't bend over backwards like
 some do on this list to avoid the Session.. I'm in The Session is  your
 friend camp:). Request will work fine however for Mike's situation. He
 just needs to wrap his collection in his ActionForm around a LazyList
 (or he can use a regular list and do the handcranking approach of
 incrementing the size when needed in the getList property in his form.
 LazyList is cleaner, though).

Request is required for my situation -- the user can have multiple
versions of the same page active in the same session.  That's what
drove me away from the 'working' session scope bean -- I had users who
were messing up the session scoped bean by opening the same page
multiple times and making modifications.

I don't see LazyList as any cleaner.  You have to add one method in
either case.  With LazyList you have to implement Factory then add the
create() method.  Extending ArrayList you have to implement a new
get().  I'll stick with the latter.

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



Re: Iterate over list in in list in form bean.

2005-07-18 Thread Mike Elliott
On 7/18/05, Rick Reumann [EMAIL PROTECTED] wrote:

 I'm still not totally clear where the problem is, since I'm not sure
 what Session has to do with the initial setup of the form.

The difference is unobvious, I admit, but this is what I was thinking
of:  If I use a session bean, I can do some sort of setup (from an
Action) on its initial creation, including creating the list of
contained objects.  That can't happen if it's in request scope because
there is no chance to invoke the setup before the bean is populated
from the request.

 1) A problem when you submit the form and getting 'index' problems
 showing up in the logs?

More than showing up, the submit was trying to populate the bean with
indexed properties but the list containing the indexed properties was
of size zero.  The
answer to the problem was given by the previous posters.  Thanks guys.  

What made the difference was the Wiki page section (BeanUtils Indexed
Properties Issue) pointing out that there is a bug in JDK 1.4 which
prevents the solution of writing your own getXXX( int ndx ) property. 
I had done that (in desperation) and when that didn't work either, I
threw up my hands and wrote the list.  I felt that it _should_ have
worked and when it didn't I just assumed my understanding of the
situation was inadequate and gave up.  I'm delighted to find out that
the problem is in the implementation and not in my mental picture of
how this whole thing works.
 
 I'm confused because you mention But, of course, a newly created form
 won't know how many elements are in the form so it can't pre-populate
 the collection with beans to be filled in. This statement confused me
 because you seem to be implying it works when it's in Session which
 doesn't make sense since even with a Session scoped form you still need
 to some initial population somewhere.

But you can do that once, before all this other stuff takes place.  I
realize that wasn't an obvious inference but that's what I meant.

 Typically I feel you should always go to some sort of setUp action or
 dispatch method BEFORE you ever forward to a form.

But doesn't that go away in request scope when the form is submitted
back to the Action?  Doesn't a new form get created and populated from
the HTML?  It sure looks like that's what's happening to me.

 For the two problems listed above the link Naill posted is good
 http://wiki.apache.org/struts/StrutsCatalogLazyList (and I just recently
 added to that link the way I like to do it).

I came up with another solution which might be worthy of
consideration.  Instead of using arrays, extend a list with the
desired get( int ) method and use that list instead:

 public class SkillActionForm extends ActionForm {

  protected List skills = new LazyArrayList();

  public class LazyArrayList extends ArrayList {
 public Object get( int index ) {
while (size() = index) add( new SkillBean()  );
return super.get( index );
 }
  }
  }

This is the solution I eventually adopted (successfully) but I have a
fondness for nested classes which others may not share.

Anyway, thanks to all, I've gotten past the problem with an increased
understanding of the intricacies of this here Struts stuff.

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



Re: Does struts really have to construct a new form bean every time?

2005-04-27 Thread Mike Elliott
On 4/27/05, Michael Jouravlev [EMAIL PROTECTED] wrote:

 scope=request   === should be scope=session

Thanks!  I knew it had to be something simple like that!  And I've
wasted a day and a half finding it.

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



Modifying an object within the form bean?

2004-10-06 Thread Mike Elliott
I have a situation where the form bean contains objects inside it
which represent sets of things which will appear in an html:select
tag.  In particular, the objects have three properties:

selected_ndx
ndx_set
label_set

One of these objects is the 'moderator' property of the form bean.

The overall design intent was to have an object which could provide
the values and labels for an html:select statement and have
selected_ndx be the value which is changed via the selection process
in the web page.

If I write the JSP like this, it works:

  html:select property=moderator.selected_ndx
  html:options property=moderator.ndx_set
labelProperty=moderator.label_set/
  /html:select

This generates the following HTML:
  
  select name=moderator.selected_ndxoption value=0/option
  option value=1First Selection/option
  option value=2Second Selection/option
  option value=3Third Selection/option/select

This successfully displays the selected entity and allows it to be
changed via selection through the web page.

However, additionally I need to be able to set the value of this
select from a popup window.  That  generally means I need to specify
the form element as the target of a javascript assignment.  What has
worked in similar circumstances in the past is something like
   
   opener.document.formBean.selectElementName = newValue

where selectElementName is the value of the 'name' attribute from the
select element.  Here that name is moderator.selected_ndx.  That
causes a problem.  When the javascript runs (from a popup window) the
following javascript error occurs:

   Error: opener.document.formBean.moderator has no properties

Which I interpret as the javascript interpreter being able to find the
formBean property (which I assume is being furnished by the
html:form tag) but that there is no attribute of that called
moderator.  If I didn't use the dotted notation in the html:select
tag, the correct attribute gets created, or whatever, and the
javascript works OK.

So -- how can I solve this problem?  Assuming that the naming is the
problem, I've tried introducing a bean like this:

  bean:define id=mod name=formBean property=moderator/   
  html:select name=mod property=selected_ndx
  html:options name=mod property=ndx_set 
labelName=mod labelProperty=label_set/
  /html:select

Which generates HTML:
  select name=selected_ndxoption value=0/option
  etc.

But that causes the select element to be unselectable; that is, while
the getter method (getSelected_ndx()) gets invoked, the setter method
(setSelected_ndx()) does not, so that changes to the field no longer
get propagated back to the form bean.  Even if I could get this to
work, I'm dubious that I could have multiple select elements working
properly in the same form since they would all have the same name
attribute (selected_ndx).

While I'm unconvinced that the failure to invoke the setter method
isn't a bug, I still need to solve the problem through some
combination of Struts/JavaScript.

Any suggestions?

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



Re: Modifying an object within the form bean?

2004-10-06 Thread Mike Elliott
On Wed, 06 Oct 2004 14:38:36 -0500, Jason King [EMAIL PROTECTED] wrote:
 This is a javascript problem.  The DOM-compliant way to change the
 selected option for a select element is:
 selectObjectName.selectedIndex = newIndex for your example that
 would be:
 
 opener.document.formBean.selectElementName.selectedIndex = newValue;

No, I don't think so.  For my example I think it would be something more like:

opener.document.formBean.moderator.select_ndx = newValue

The problem appears to be the dotted notation that Struts uses to name
the select element.  If Struts generated

select name=moderator_selected_ndx

instead of

select name=moderator.selected_ndx

I feel confident it would work like you said.  But that dot in the
name apparently makes JavaScript view the field as being the
'selected_ndx' attribute of the 'moderator' object which, of course,
doesn't exist.

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



Re: Modifying an object within the form bean?

2004-10-06 Thread Mike Elliott
 Try opener.document.formBean[moderator.selected_ndx]  The arrays are
 also hashtables.

Yes, that works.  Thanks a bunch.  Although I still think that the
bean approach *should* have worked -- it doesn't.  And I'll gladly
settle for this workaround.

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



Re: OT: bouncing address (if this is you at standardbank.co.az, PLEASE correct it)

2004-10-06 Thread Mike Elliott
On Wed, 6 Oct 2004 19:46:46 -0400, David G. Friedman
[EMAIL PROTECTED] wrote:
 I'm starting to severly dislike this error message from some unknown subscribe
 at standarbank.co.az.  

Actually its standardbank.co.za (South Africa).  I'm getting them too.
 I assume everyone is.

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



Compilation of JSP at time of deployment?

2004-09-27 Thread Mike Elliott
I have a neglected Ultra 1, now running Solaris 9, which I've rescued
to use as a web application server.  It's running JBoss just fine and
when my web application is loaded and run the response time, while
slow (on the order of a second or two per page) is still reasonable.

The problem comes about after redeploy, or reboot, or JBoss restart,
or whatever, which causes JBoss to forget all the compiled servlets
for the application.  When the first user encounters such a page the
page is, of course, compiled and made ready for use -- but this can
take tens of seconds to accomplish, leaving a less than sparkling
impression for the user.

Is there a way to force all the JSPs and ActionForms, etc., to be
compiled and ready to go at the time of deployment?  Even if it takes
several minutes to achieve this, it would be worth it rather than
delaying until the first user/victim accesses the page.

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



Re: Storing User in Session

2004-09-23 Thread Mike Elliott
On Thu, 23 Sep 2004 15:31:47 -0400, Sean Schofield
[EMAIL PROTECTED] wrote:
  Of course if you have millions of users that
 might be another story.

Millions of users, each of whom have an active session.  Otherwise,
who cares how many rows are in the database?  Certainly not struts.

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



Re: How to treat optional dates?

2004-09-16 Thread Mike Elliott
On Thu, 2004-09-16 at 19:28, [EMAIL PROTECTED] wrote:

 Since the posting I made a happy discovery though. If I save an optional
 date with the value '01-01-0001' (d-m-y), it appears as blank when
 displayed - just what I was after.

Are you sure?  Isn't it m-d-y?




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



RE: Making a file available?

2004-09-16 Thread Mike Elliott
On Thu, 2004-09-16 at 19:49, Joe Hertz wrote:
 Absolutely. You have access to all of the response object methods you would
 in a servlet to do this with.
 
 Set the correct content type and content length headers and spit it to the
 outputstream. Return a null findForward.
 
 I've done this with pdf files, (and this week I asked on this list about img
 tags. Was even easier: It worked the same way, but with none of the header
 setting apparently. Least I hope so :-).
 
 In fact, the file doesn't even need to be accessible via a browser
 accessible URL. If the application can read it, that's all you need.

So, you mean something like this?

public class FileXferAction extends Action {
   public ActionForward execute(
ActionMapping actionMapping, ActionForm actionForm,
ServletRequest servletRequest, ServletResponse servletResponse )
throws Exception {
  System.out.println( Here we are! );
  OutputStream os = servletResponse.getOutputStream();
  os.write( Content-Type: application/pdf\n.getBytes() );
  FileInputStream fis = new FileInputStream( /tmp/test.pdf );
  int len;
  byte[] bytes = new byte[1024];
  while ((len = fis.read( bytes ))  0) {
 os.write( bytes, 0, len );
  }
  fis.close();
  return null;
   }
}

Unfortunately that just gives me a blank screen.  Importantly, Here we
are! does NOT show up in the log, so . . . apparently the action isn't
even getting invoked.  Probably something to do with struts-config.xml:

  action path=/xferFile
 type=action.FileXferAction
 validate=false/

I just guessed at this.  Since it doesn't forward, doesn't use a JSP
page, etc, I'm leaving those attributes empty.  If they shouldn't be
empty, what should they be?

Mike




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



HTML Filtering?

2004-08-16 Thread Mike Elliott
I have a situation where I need to populate a table with values.  Sometimes 
those values are empty.  Mozilla, for reasons outside of this discussion will 
not fully render a table datum that is empty; that is, it will render nothing 
(correctly) but also not render the border of the table datum either, if the 
content is empty.

Normally the workaround for this is to put a non breakable space (nbsp;) in 
the table datum to get Mozilla (or Netscape, for that matter) to render the 
table datum with all surrounding borders.  However, Struts makes that 
difficult.

If I use a bean:write tag, I can specify filtering off to allow the nbsp; 
non breakable space to appear.  That will, however, prevent the filtering of 
non-empty items as well -- which might not be such a good idea.  Or, I can 
turn on filtering which will cause oddball elements to be rendered correctly, 
but will prevent the nbsp; from being a non-breakable space.

So . . . what I need to do is perform the filtering beforehand, then set the 
bean to render the property with no filtering (filtering=false).  That 
means I need to do my own filtering.  Yes, I can write my own HTML filtering 
routine, but . . . there must be something already out there - probably part 
of the commons-beanutils jar file - that already does such filtering.  I'd 
much rather use that than roll my own.

Anyone know of such a routine?  That is, a routine invokable from within an 
arbitrary class, that takes a chunk of text and renders ampersands as amp;, 
left angle brackets as lt; etc.?

--
Mike Elliott

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



Re: Read only iterate?

2004-08-15 Thread Mike Elliott
On Saturday 14 August 2004 17:52, Kishore Senji wrote:
 Refer:
 http://struts.apache.org/faqs/indexedprops.html

   logic:iterate id=entry name=problemBean property=items 
 tr
   tdProblematic input/td
   td
 html:text name=entry
   property=integer_value indexed=true/
   /td
 /tr
   /logic:iterate

 Try the one below:

 logic:iterate id=entry name=problemBean property=items
 indexId=ctr tr
  tdProblematic input/td
  td
html:text name=problemBean
  property='%=items[+ctr+].integer_value%'/
  /td
/tr
 /logic:iterate

Yes, that works.  Thank you.  However, I would put that in the general 
category of a workaround rather than the correct solution.  I read the 
reference you mentioned before making my original attempt.

In that reference, the authors themselves feel there is a better solution: 

   The JSP expression syntax for the property attribute is somewhat 
messy and easy to get wrong so it's something we want to avoid.
One way to make this a little cleaner is to use indexed tags'

and then go on to talk about indexed tags as being superior.  I took from 
that the notion that I should avoid the first solution; that indexed tags 
would do the same thing.  

If that's actually true then I'd be delighted to see how to make it work.  
Nowhere in the discussion do the authors drop the bomb that using indexed 
tags makes the whole situation read-only and I still think that there must be 
some way to make it work using indexed tags -- I just haven't yet found it.

However, thanks for pointing me at the earlier solution -- it does work, 
awkward as it is, and that's really important when one has a product to 
deliver.

--
Mike Elliott

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



Re: Read only iterate?

2004-08-14 Thread Mike Elliott
On Friday 13 August 2004 09:40, Richard Yee wrote:
 Mike,
 What does the generated HTML look like?

The generated HTML is not the problem; the failure to invoke the set method is 
the problem.  However, maybe looking at it would provide some insight into 
the cause.  Anyway, here it is:

html
  head
titleProblem page/title
/head

body
div style=text-align: center
  form name=problemBean method=post 
  action=/pr99/Problem.do?arg=update
table width=800 border=0 cellspacing=0 cellpadding=0
  tr
td align=center colspan=2
  input type=submit value=Submit
/td
  /tr
  hr /
  
tr
  tdProblematic input/td
  td
input type=text name=entry[0].integer_value value=0
  /td
/tr
  
tr
  tdProblematic input/td
  td
input type=text name=entry[1].integer_value value=1
  /td
/tr
  

  tr
tdbFunctioning input/b/td
td
   input type=text name=working_perfectly value=x
/td
  /tr

/table
  /form
  hr /
/div
  /body
/html

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



Re: Read only iterate?

2004-08-14 Thread Mike Elliott
On Friday 13 August 2004 09:43, Brian Lee wrote:
 Lists work, but you have to write your own set(int index) method to set the
 correct object from the List.

 BAL

I still believe that lists work -- it's not lack of belief that's the problem, 
it's lack of results.  There's some magic involved that, if documented 
anywhere is somewhere I have yet to uncover.  

Based on the general principal of orthogonality if the get method is properly 
invoked (which it apparently is) then the equivalent set method should also 
be invoked.  That's simply not happening.  However, orthogonality aside, if 
writing a separate indexed set method would make the problem go away I'd 
gladly use it.

Alas, however, that doesn't make the slightest difference.  I added two 
indexed set methods as you suggested with depressingly familiar results:


package problem;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;

import java.util.ArrayList;
import java.util.List;

public class ProblemBean extends ActionForm {

   final private static int ENTRY_ROW_COUNT = 2;

   public ProblemBean() {
  log.info( initializing entries );
  entries = new ArrayList();

  // Create some entries for the form
  for (int ndx = 0 ; ndx  ENTRY_ROW_COUNT; ndx ++) {
 ProblemItem a = new ProblemItem();
 a.setInteger_value( new Integer(ndx));

  entries.add( a );
  }
   }

   private String working_perfectly = A Value;

   public String getWorking_perfectly() {
  log.info( getWorking_perfectly );
  return working_perfectly;
   }

   public void setWorking_perfectly( String working_perfectly ) {
  log.info( setWorking_perfectly to ' + working_perfectly + ');
  this.working_perfectly = working_perfectly;
   }

   private List entries;

   public List getEntries() {
  log.info( getEntries );
  return entries;
   }

   public void setEntries( List entries ) {
  log.info( setEntries );
  this.entries = entries;
   }

   // Added an indexed setter just in case
   public void setInteger_value( int ndx, Integer iValue ) {
  log.info( OHMYGOD -- IT GOT INVOKED! );
  ProblemItem pi = (ProblemItem)getEntries().get( ndx );
  pi.setInteger_value( iValue );
   }

   public static class ProblemItem extends ActionForm {

  // Used so that each item can have a unique value.
  private static Integer incrementing = new Integer( 0 );

  public ProblemItem() {
 this.integer_value = incrementing;
 incrementing = new Integer( incrementing.intValue() + 1 );
  }

  private Integer integer_value;

  public Integer getInteger_value() {
 log.info( getInteger_value );
 return integer_value;
  }

  public void setInteger_value( Integer iValue ) {
 log.info( setInteger_value to  + iValue );
 this.integer_value = iValue;
  }

  // Added an indexed setter just in case
  public void setInteger_value( int ndx, Integer iValue ) {
 log.info( OHMYGOD -- IT GOT INVOKED!);
 this.integer_value = iValue;
  }

  private static Logger log = Logger.getLogger( ProblemItem.class );
   }

   private static Logger log = Logger.getLogger( ProblemBean.class );
}


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



Re: Read only iterate?

2004-08-14 Thread Mike Elliott
On Friday 13 August 2004 09:40, Jim Barrows wrote:
  -Original Message-
  From: Mike Elliott [mailto:[EMAIL PROTECTED]
  Sent: Friday, August 13, 2004 9:33 AM
  To: [EMAIL PROTECTED]
  Subject: Read only iterate?
 
 
  I've been totally defeated in my attempt to alter an html:text
  element inside a logic:iterate tag.  There must be a way to
  accomplish this, but I've been beating my head against the wall
  for three days now without making progress.
 
  I have simplified the problem substantially from the initial page.
  What I have now looks like this:

 from
 http://struts.apache.org/userGuide/struts-html.html#text
 I'm guessing that a List won't work and you need to have an array.

No -- changing it to a list makes no difference whatsoever:

package problem;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;

import java.util.ArrayList;
import java.util.List;

public class ProblemBean extends ActionForm {

   final private static int ENTRY_ROW_COUNT = 2;

   public ProblemBean() {
  log.info( initializing entries );
  entries = new ArrayList();

  // Create some entries for the form
  for (int ndx = 0 ; ndx  ENTRY_ROW_COUNT; ndx ++) {
 ProblemItem a = new ProblemItem();
 a.setInteger_value( new Integer(ndx));

  entries.add( a );
  }
   }

   private String working_perfectly = A Value;

   public String getWorking_perfectly() {
  log.info( getWorking_perfectly );
  return working_perfectly;
   }

   public void setWorking_perfectly( String working_perfectly ) {
  log.info( setWorking_perfectly to ' + working_perfectly + ');
  this.working_perfectly = working_perfectly;
   }

   private List entries;

   public ProblemItem[] getEntries() {
  log.info( getEntries );
  ProblemItem[] result = new ProblemItem[entries.size()];
  for (int ndx = 0; ndx  entries.size(); ndx++)
 result[ndx] = (ProblemItem)entries.get( ndx );
  return result;
   }

   public void setEntries( List entries ) {
  log.info( setEntries );
  this.entries = entries;
   }

   public static class ProblemItem extends ActionForm {

  // Used so that each item can have a unique value.
  private static Integer incrementing = new Integer( 0 );

  public ProblemItem() {
 this.integer_value = incrementing;
 incrementing = new Integer( incrementing.intValue() + 1 );
  }

  private Integer integer_value;

  public Integer getInteger_value() {
 log.info( getInteger_value );
 return integer_value;
  }

  public void setInteger_value( Integer iValue ) {
 log.info( setInteger_value to  + iValue );
 this.integer_value = iValue;
  }

  private static Logger log = Logger.getLogger( ProblemItem.class );
   }

   private static Logger log = Logger.getLogger( ProblemBean.class );
}


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



Read only iterate?

2004-08-13 Thread Mike Elliott
I've been totally defeated in my attempt to alter an html:text
element inside a logic:iterate tag.  There must be a way to
accomplish this, but I've been beating my head against the wall
for three days now without making progress.

I have simplified the problem substantially from the initial page.
What I have now looks like this:

   -
  [ Submit ]
   Problematic Input [0   ]
   Problematic Input [1   ]
   Functioning Input [A Value ]
   -

The lines containing Problematic Input were generated by a
logic:iterate tag, which successfully fetched the list of objects from
the form bean.  The last line, containing Functioning Input, was
generated outside of the logic:iterate tag.  Actual contents of the
jsp page, bean, etc., are attached.

What happens at runtime is that when the JSP page is rendered, the
text fields for all three rows are successfully and correctly fetched
from the form bean, but only the last row can be changed.  As the log
shows:

start
  INFO  [org.apache.struts.util.PropertyMessageResources] Initializing, 
config='org.apache.struts.taglib.html.LocalStrings', returnNull=true
  INFO  [problem.ProblemBean] initializing entries
  INFO  [problem.ProblemBean$ProblemItem] setInteger_value to 0
  INFO  [problem.ProblemBean$ProblemItem] setInteger_value to 1
  INFO  [problem.ProblemAction] show
  INFO  [org.apache.struts.util.PropertyMessageResources] Initializing, 
config='org.apache.struts.taglib.logic.LocalStrings', returnNull=true
  INFO  [problem.ProblemBean] getEntries
  INFO  [problem.ProblemBean$ProblemItem] getInteger_value
  INFO  [problem.ProblemBean$ProblemItem] getInteger_value
  INFO  [problem.ProblemBean] getWorking_perfectly
submit
  INFO  [problem.ProblemBean] setWorking_perfectly to 'mutated'
  INFO  [problem.ProblemAction] update
  INFO  [problem.ProblemBean] getEntries
  INFO  [problem.ProblemBean$ProblemItem] getInteger_value
  INFO  [problem.ProblemBean$ProblemItem] getInteger_value
  INFO  [problem.ProblemBean] getWorking_perfectly

The page is initialized properly.  All three values are fetched from
the form bean via the expected get methods.  The html form is properly
populated and displays the expected values (0, 1, and A Value).

The three fields are then changed (to 5, 5, and mutated) and the
submit button is selected at the point in the log file where I have
inserted the submit annotation.

This causes the form to be submitted to the Action, causing the set
method for the field working_perfectly to be invoked (as it should
be), but the set method for the two fields in the logic:iterate tag is
not invoked.  And I don't know why.  And I can't seem to get them to
be invoked, either.

So . . . the magic isn't working.  Something must be needed to tell
the generated servlet not to treat these two properties (inside the
logic:iterate tag) as read-only.  What should it be?  How can I get
these properties to be updated in the form bean as the
working_perfectly property is?

Like I said -- I've been beating my head against this problem for
three days now.  There's just got to be a way!

--
struts-config.xml
--
?xml version=1.0 encoding=ISO-8859-1 ?

!DOCTYPE struts-config PUBLIC
  -//Apache Software Foundation//DTD Struts Configuration 1.0//EN
  http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd;

struts-config

   form-beans
  form-bean
 name=problemBean
 type=problem.ProblemBean/
   /form-beans

   action-mappings
  action
 path=/problemPage
 type=problem.ProblemAction
 name=problemBean
 validate=false
 input=/pages/problem.jsp/
   /action-mappings

/struts-config

--
problem.jsp:
--
%@ taglib uri=/taglib/struts-logic prefix=logic %
%@ taglib uri=/taglib/struts-html prefix=html %
html
  head
titleProblem page/title
/head

body
div style=text-align: center
  html:form action=/classicResultPage.do?arg=update method=post
table summary=x width=800 border=0 cellspacing=0
   cellpadding=0
  tr
td align=center colspan=2
  html:submit/
/td
  /tr
  hr /
  logic:iterate id=entry name=problemBean property=items 
tr
  tdProblematic input/td
  td
html:text name=entry
  property=integer_value indexed=true/
  /td
/tr
  /logic:iterate

  tr
tdbFunctioning input/b/td
td
   html:text property=someValue/
/td