Huh, I thought technically a public instance variable on a JavaBean was also valid as a property and introspection could be expected to work equally as well against a public instance variable as against accessor and mutator methods.
> -----Original Message----- > From: Hans Bergsten [mailto:[EMAIL PROTECTED]] > Sent: Friday, September 27, 2002 1:24 PM > To: Tag Libraries Users List > Subject: Re: jsp:getProperty > > > Marcelo Flores A. wrote: > > I need help... > > > > I'm have data of javabeans than have other javabeans with > attribute. > > > > class MyClass1 > > { > > String name; > > MyClass2 myClass2; > > } > > > > class MyClass2 > > { > > String name2; > > } > > > > how I have across sintax tag the name2' s value only with > object MyClass1 > > > > <jsp:getProperty name="MyClass1" property="name2"> throw a error. > > > > I don't know how do it---- > > I know you've already received a number of answers, but since each one > just gives you a piece of the solution, let me give it a try as well. > > First, <jsp:getProperty> and JSTL can not access public fields in a > class, only bean getter methods. So no matter if you want to use JSTL > or not, you need to expose all data you want to access through getter > methods. Depending on what makes sense for your application, you can > expose "name2" directly in MyClass1: > > 1) > > class MyClass1 { > String name; > MyClass2 myClass2; > ... > public String getName() {return name;} > public String getName2() {return myClass2.name;} // > public field > } > > or expose MyClass2 in MyClass1, and then expose "name2" in MyClass 2: > > 2) > > class MyClass1 { > String name; > MyClass2 myClass2; > ... > public String getName() {return name;} > public String getMyClass2() {return myClass2} > } > > class MyClass2 { > String name2; > ... > public String getName2() {return name2;} > } > > Without JSTL, you can now get "name2" like this: > > 1) > > <jsp:useBean id="myClass1" class="com.foo.MyClass1" /> > <jsp:getProperty name="myClass1" property="name2" /> > > 2) > > <jsp:useBean id="myClass1" class="com.foo.MyClass1" /> > <% > // Must use scripting to get MyClass2 first > MyClass2 myClass2 = myClass1.getMyClass2(); > // Must save in a JSP scope for getProperty to find it > pageContext.setAttribute("myClass2", myClass2); > %> > <jsp:getProperty name="myClass2" property="name2" /> > > With JSTL, case 2) it's much easier: > > 1) > > <jsp:useBean id="myClass1" class="com.foo.MyClass1" /> > <c:out value="${myClass1.name2}" /> > > 2) > > <jsp:useBean id="myClass1" class="com.foo.MyClass1" /> > <c:out value="${myClass1.myClass2.name2}" /> > > For details about using JSTL, see > <http://java.sun.com/products/jsp/jstl/> > > I hope this helps, > Hans > -- > Hans Bergsten [EMAIL PROTECTED] > Gefion Software http://www.gefionsoftware.com > JavaServer Pages http://TheJSPBook.com > > > -- > To unsubscribe, e-mail: > <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: > <mailto:[EMAIL PROTECTED]> > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>