Hello Mark,

  

***************************************************************

MG> I have not found this
but I have:

If the source code for a class contains no declared constructors, the Java compiler
automatically supplies a constructor with no parameters. Adding one or more
constructor declarations to the source code of such a class will prevent this default
constructor from being supplied automatically, effectively deleting a constructor,
unless one of the new constructors also has no parameters, thus replacing the
default constructor.

JLS, page 267

MG>  in the spec, but I believe the no-argument constructor
MG> is available at anytime for a concrete class.  This would be a good one to
MG> test....


MG> -----Original Message-----
MG> From: Michael Duffy [mailto:[EMAIL PROTECTED] 
MG> Sent: Wednesday, July 16, 2003 10:27 AM
MG> To: Struts Users Mailing List
MG> Subject: RE: [OT] Re: 4th Of July Struts Challenge...



MG> It's my understanding that you ONLY get the default if
MG> there are no other constructors written.  The minute
MG> you write ANY constructor, you're on your own.  If you
MG> still want a default ctor, you've gotta supply it. 

MG> I'll be happy to learn something if this is incorrect.
MG> - MOD


MG> --- Mark Galbreath <[EMAIL PROTECTED]> wrote:
>> The no-argument constructor is the default and does
>> not have to be declared.
>> You have a 2-arg constructor.  As for JSTL (or any
>> EL) acting like straight
>> scripting, I've never had an argument with using
>> scripting where
>> appropriate.  Pragmatism should be the rule of the
>> day.  Finally, I don't
>> know why declaring DynaActionForm beans as Maps
>> didn't work for me, but
>> neither is it a big issue. I realize the constraints
>> of declaring a variable
>> as a concrete/abstract class vs. as an interface.
>> 
>> Besides, I like what you've created. :-)
>> 
>> -----Original Message-----
>> From: Kris Schneider [mailto:[EMAIL PROTECTED]
>> Sent: Wednesday, July 16, 2003 8:55 AM
>> To: Struts Users Mailing List
>> Subject: RE: [OT] Re: 4th Of July Struts
>> Challenge...
>> 
>> 
>> Quoting Mark Galbreath <[EMAIL PROTECTED]>:
>> 
>> > A few comments:
>> > 
>> > 1.  I got runtime errors when I declared a
>> DynaActionForm bean of type
>> > Map; I had to declare it of type HashMap.
>> 
>> Not sure what you're doing, but the example works as
>> coded. If it matters,
>> post some details and we'll see if something needs
>> fixing.
>> 
>> > 2.  You may be using JSTL, but it still looks like
>> scripting to
>> > me.....
>> 
>> Fair enough. What's your recommended alternative to
>> JSTL when using JSP for
>> your view layer?
>> 
>> > 3.  Strictly speaking, JavaBeans do not contain a
>> constructor and
>> > implement Serializable.
>> 
>> Strictly speaking, a JavaBean *does* contain a
>> construtctor (or even more
>> than one), just like any other Java class. It's just
>> that a "real" bean
>> needs to have a no-arg constructor. The actual code
>> that I uploaded to Rick
>> includes a no-arg construtctor for EmployeeBean but
>> omitted implementing
>> Serializable or Externalizable. The bean also fails
>> to act as an event
>> source and it doesn't check for things like null
>> values passed to either its
>> construtctor or its set methods.
>> 
>> > Mark
>> > 
>> > -----Original Message-----
>> > From: Rick Reumann [mailto:[EMAIL PROTECTED]
>> > Sent: Tuesday, July 15, 2003 11:44 PM
>> > To: Struts Users Mailing List
>> > Subject: [OT] Re: 4th Of July Struts Challenge...
>> > 
>> > 
>> > Kris... this was just awesome! Thanks. You da
>> 'man:)
>> > 
>> > On Tue, Jul 15,'03 (11:25 AM GMT-0400), Kris
>> wrote:
>> > 
>> > > As it turns out, some of my ideas about a
>> "standard" property of
>> > > type
>> > > Map versus a "mapped property" were a bit off.
>> So, if you're still
>> > > interested, here's something I hacked together.
>> You'll notice I used a
>> > > session scoped form so that Struts doesn't choke
>> when it tries to
>> > > populate the form.
>> > > 
>> > > struts-config.xml:
>> > > ------------------
>> > > 
>> > >     <form-beans>
>> > >         <form-bean name="employeesForm"
>> > >                   
>> type="org.apache.struts.action.DynaActionForm">
>> > >             <form-property name="employeesMap"
>> type="java.util.Map"/>
>> > >         </form-bean>
>> > >     </form-beans>
>> > > 
>> > >     <action-mappings>
>> > >         <action path="/employees/edit"
>> > >                
>> type="com.dotech.EditEmployeesAction"
>> > >                 name="employeesForm"
>> > >                 scope="session"
>> > >                 validate="false">
>> > >             <forward name="success"
>> path="/editEmployees.jsp"/>
>> > >         </action>
>> > >         <action path="/employees/save"
>> > >                
>> type="org.apache.struts.actions.ForwardAction"
>> > >                 parameter="/viewEmployees.jsp"
>> > >                 name="employeesForm"
>> > >                 scope="session"
>> > >                 validate="false"/>
>> > >     </action-mappings>
>> > > 
>> > > 
>> > > editEmployees.jsp:
>> > > ------------------
>> > > 
>> > > <%@ taglib prefix="bean" 
>> > > uri="http://jakarta.apache.org/struts/tags-bean";
>> %><%@ taglib
>> > > prefix="c"   
>> uri="http://java.sun.com/jstl/core"; %><%@ taglib
>> > > prefix="html"
>> uri="http://jakarta.apache.org/struts/tags-html"; %>
>> > > 
>> > > <%-- dynamically get a handle to the form --%> <bean:struts 
>> > > id="mapping"
>> mapping="/employees/save"/> <c:set
>> > > var="attribute" value="${mapping.attribute}"/>
>> <c:set var="scope"
>> > > value="${mapping.scope}"/> <c:choose>
>> > >     <c:when test="${scope eq 'request'}">
>> > >         <c:set var="form"
>> value="${requestScope[attribute]}"/>
>> > >     </c:when>
>> > >     <c:otherwise>
>> > >         <c:set var="form"
>> value="${sessionScope[attribute]}"/>
>> > >     </c:otherwise>
>> > > </c:choose>
>> > > 
>> > > <html>
>> > > 
>> > >   <head><title>Edit Employees</title></head>
>> > > 
>> > >   <body>
>> > >     <html:form action="/employees/save">
>> > >       <table>
>> > >         <c:forEach var="entry"
>> items="${form.map.employeesMap}">
>> > >           <tr>
>> > >             <td><c:out
>> value="${entry.key}"/></td>
>> > >             <td>
>> > >               <input type="text"
>> > >                      name="<c:out
>> > >                     
>> value="employeesMap(${entry.key}).name"/>"
>> > >                      value="<c:out
>> value="${entry.value.name}"/>">
>> > >             </td>
>> > >             <td>
>> > >               <input type="text"
>> > >                      name="<c:out
>> > >                     
>> value="employeesMap(${entry.key}).age"/>"
>> > >                      value="<c:out
>> value="${entry.value.age}"/>">
>> > >             </td>
>> > >           </tr>
>> > >         </c:forEach>
>> > >         <tr>
>> > >           <td align="center"
>> colspan="3"><html:submit/></td>
>> > >         </tr>
>> > >       </table>
>> > >     </html:form>
>> > >   </body>
>> > > 
>> > > </html>
>> > > 
>> > > 
>> > > EmployeeBean.java:
>> > > ------------------
>> > > 
>> > > package com.dotech;
>> > > 
>> > > public class EmployeeBean {
>> > > 
>> > >     private String name;
>> > >     private String age;
>> > > 
>> > >     public EmployeeBean(String name, String age)
>> {
>> > >         this.name = name;
>> > >         this.age = age;
>> > >     }
>> > > 
>> > >     public String getName() { return this.name;
>> }
>> > >     public void setName(String name) { this.name
>> = name; }
>> > > 
>> > >     public String getAge() { return this.age; }
>> > >     public void setAge(String age) { this.age =
>> age; }
>> > > }
>> > > 
>> > > 
>> > > EditEmployeesAction.java:
>> > > -------------------------
>> > > 
>> > > package com.dotech;
>> > > 
>> > > import java.util.*;
>> > > import javax.servlet.http.*;
>> > > import org.apache.commons.beanutils.*;
>> > > import org.apache.struts.action.*;
>> > > 
>> > > public class EditEmployeesAction extends Action
>> {
>> > > 
>> > >     public ActionForward execute(ActionMapping
>> mapping,
>> > >                                  ActionForm
>> form,
>> > >                                 
>> HttpServletRequest request,
>> > >                                 
>> HttpServletResponse response) throws
>> > >                                  Exception {
>> > >         Map empMap = new HashMap();
>> > >         empMap.put("1111", new
>> EmployeeBean("John Doe", "33"));
>> > >         empMap.put("2222", new
>> EmployeeBean("Loser Boy", "22"));
>> > >         PropertyUtils.setProperty(form,
>> "employeesMap", empMap);
>> > >         return mapping.findForward("success");
>> > >     }
>> > > }
>> > > 
>> > > 
>> > > viewEmployees.jsp:
>> > > ------------------
>> > > 
>> > > <%@ taglib prefix="bean" 
>> > > uri="http://jakarta.apache.org/struts/tags-bean";
>> %><%@ taglib
>> > > prefix="c"   
>> uri="http://java.sun.com/jstl/core"; %>
>> > > 
>> > > <%-- dynamically get a handle to the form --%> <bean:struts 
>> > > id="mapping"
>> mapping="/employees/save"/> <c:set
>> > > var="attribute" value="${mapping.attribute}"/>
>> <c:set var="scope"
>> > > value="${mapping.scope}"/> <c:choose>
>> > >     <c:when test="${scope eq 'request'}">
>> > >         <c:set var="form"
>> value="${requestScope[attribute]}"/>
>> > >     </c:when>
>> > >     <c:otherwise>
>> > >         <c:set var="form"
>> value="${sessionScope[attribute]}"/>
>> > >     </c:otherwise>
>> > > </c:choose>
>> > > 
>> > > <html>
>> > > 
>> > >     <head><title>View Employees</title></head>
>> > > 
>> > >     <body>
>> > >         <table>
>> > >             <c:forEach var="entry"
>> items="${form.map.employeesMap}">
>> > >                 <tr>
>> > >                     <td><c:out
>> value="${entry.key}"/></td>
>> > >                     <td><c:out
>> value="${entry.value.name}"/></td>
>> > >                     <td><c:out
>> value="${entry.value.age}"/></td>
>> > >                 </tr>
>> > >             </c:forEach>
>> > >         </table>
>> > >     </body>
>> > > 
>> > > </html>
>> > > 
>> > > Quoting Kris Schneider <[EMAIL PROTECTED]>:
>> > > 
>> > > > Okay, so that's way too much work ;-). I'm not
>> sure, but I think
>> > > > one
>> > > > of the issues you're running into is the
>> difference between a
>> > > > "standard" property of type Map and a "mapped
>> property". The first
>> > > > is declared like:
>> > > > 
>> > > > public Map getEmployeesMap()
>> > > > public void setEmployeesMap(Map m)
>> > > > 
>> > > > The second is declared like:
>> > > > 
>> > > > public Object getEmployeeMapped(String key)
>> > > > public void setEmployeeMapped(String key,
>> Object value)
>> > > > 
>> > > > For a mapped property, you'd use a reference
>> like
>> > > > "employeeMapped(1111)" to get the object
>> stored under the "1111"
>> > > > key. I really haven't played much with either
>> > > > of the above cases, so I may be off base...
>> > > > 
>> > > > Quoting Rick Reumann <[EMAIL PROTECTED]>:
>> > > > 
>> > > > > Ok stupid subject line, but now I can get
>> back to something I
>> > > > > was
>> > > > > curious about that I posted around a week
>> ago. I'm really curious
>> > > > > how to do accomplish this and yes have tried
>> it a bunch of
>> > > > > different ways...
>> > > > > 
>> > > > > Here's the challenge....
>> > > > > 
>> > > > > First challenge is just with a regular
>> ActionForm...
>> > > > > 
>> > > > > 1) Your ActionForm has to have a property of
>> type Map. For this
>> > > > > adventure call it employeesMap.
>> > > > > 
>> > > > > 2) Each map will hold for the key and
>> employeeID ( String ssn -
>> > > > > social security number whatever). The value
>> will be an
>> > > > > EmployeeBean. For testing sake just have it
>> have two properties
>> > > > > String name, String age.
>> > > > > 
>> > > > > 3) Put two employees into the Map and put
>> this Map into your
>> > > > > ActionForm: HashMap empMap = new HashMap(); empMap.put( 
>> > > > > "1111", new EmployeeBean("John
>> Doe", "33" ) );
>> > > > > empMap.put( "2222", new EmployeeBean("Loser
>> Boy", "22" ) );
>> > > > > setEmployeesMap( empMap );
>> > > > > 
>> > > > > 4) Now have a jsp form iterate over this Map
>> and provide text
>> > > > > fields to edit the name and age of each
>> employee. When the form is
>> > > > > submitted there should be a way that it will
>> submit this Map with
>> > > > > updated EmployeeBeans with the new names and
>> ages for each key
>> > > > > (1111 and 2222 ). Pull the map out of the
>> action you submit to and
>> > > > > print the properties of the EmployeeBeans to
>> test.
>> > > > > 
>> > > > > 
>> > > > > Second challenge... is do the above using
>> your employeesMap as a
>> > > > > property of a DynaActionForm.
>> > > > > 
>> > > > > Preferably use JSTL and/or struts-el also
>> would be nice.
>> > > > > 
>> > > > > (First one to successfully complete this
>> challenge will win 100
>> > > > > dollars for each person that they forward
>> this e-mail to, as
>> > > > > Microsoft will be monitoring all the e-mails
>> as well. That kid
>> > > > > doing this project for his science fair
>> project to see how far
>> > > > > e-mails travel will also be involved, so
>> please reply to him. The
>> > > > > 100 dollars will come from that African
>> tribe leader with that
>> > > > > money he is just dying to give away if you
>> just contact him. Some
>> > > > > of the money might come from the stolen
>> tourist kidney sales in
>> > > > > Mexico, but I'm not positive of that).
>> > > > > 
>> > > > > --
>> > > > > Rick
>> > > > 
>> > > > --
>> > > > Kris Schneider <mailto:[EMAIL PROTECTED]>
>> > > > D.O.Tech       <http://www.dotech.com/>
>> > > 
>> > 
>> > 
>> > --
>> > Rick
>> 
>> --
>> Kris Schneider <mailto:[EMAIL PROTECTED]>
>> D.O.Tech       <http://www.dotech.com/>
>> 
>>
MG> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail:
>> [EMAIL PROTECTED]
>> 
>> 
>> 
>>
MG> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail:
>> [EMAIL PROTECTED]
>> 


MG> __________________________________
MG> Do you Yahoo!?
MG> SBC Yahoo! DSL - Now only $29.95 per month! http://sbc.yahoo.com

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



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



Regards,
Dirk

+------- Quality leads ---------------------------------------+
| Dirk Markert                     [EMAIL PROTECTED] |
| Dr. Markert Softwaretechnik AG                              |
| Joseph-von-Fraunhofer-Str. 20                               |
| 44227 Dortmund                                              |
+---------------------------------->>>>>>> to success! <<<<<<-+ 


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

Reply via email to