No, that book represents NECESSARY programming philosophy.  It applies to
Tapestry quite a bit, since your Tapestry components are simple POJO classes
and you are free to use inheritance and aggregation to address these kinds
of challenges.

Your question, about "ugly code", showed that you aren't thinking in terms
of reusable units of code, but are instead just cutting and pasting. If I
had five chunks of identical code, I'd start thinking in terms of
identifying the commonalities and moving them to a shared method or base
class, or in Tapestry, a common, reusable component. If that kind of thing
doesn't jump out at you with just a glance, then you are not programming,
you are just throwing together code.  You're much of the way there ... at
least you recognized that it was ugly, but you want to learn to see things
not as they are, but as they should be. The rest will follow.

On 5/22/07, Allen Guo <[EMAIL PROTECTED]> wrote:


But I don't think it's useful for me to organize TAPESTRY application
effectlly.
That books just represent basic programming Philosophy .
Jesse Kuhnert 写道:
> +1 I picked it up after seeing Howard mentioned it and loved it. :)
>
> On 5/22/07, Howard Lewis Ship <[EMAIL PROTECTED]> wrote:
>>
>> The book "The Pragmatic Programmer" is an excellent start on learning
>> how
>> to
>> organize your code and your mind and work effectively,
>> professionally, and
>> pragmatically.
>>
>> http://www.powells.com/biblio/65-9780201616224-0
>>
>> On 5/21/07, Allen Guo <[EMAIL PROTECTED]> wrote:
>> >
>> > Thanks , It's running now
>> > But suppose there is five properties of Product is relative with
image
>> > Product class looks like
>> > class Product{
>> > private String _img1;
>> > private String _img2;
>> > private String _img3;
>> > private String _img4;
>> > private String _img5;
>> > ....
>> > }
>> >
>> > So for show the img, I have to define the corresponding Img url in
>> > ProductDetai.java like
>> > // ProductDetail.java
>> > class ProductDetail{
>> > private String _imgUrl1;
>> > private String _imgUrl2;
>> > private String _imgUrl3;
>> > private String _imgUrl4;
>> > private String _imgUrl5;
>> > public String getProductImageURL1() {
>> > return "http://static.myco.com/product-images/"; + _imgUrl1 + ".gif";
>> > }
>> > public String getProductImageURL2() {
>> > return "http://static.myco.com/product-images/"; + _imgUrl2 + ".gif";
>> > }
>> > public String getProductImageURL3() {
>> > return "http://static.myco.com/product-images/"; + _imgUrl3 + ".gif";
>> > }
>> > public String getProductImageURL4() {
>> > return "http://static.myco.com/product-images/"; + _imgUrl4 + ".gif";
>> > }
>> > public String getProductImageURL5() {
>> > return "http://static.myco.com/product-images/"; + _imgUrl5 + ".gif";
>> > }
>> > }
>> > Imagine another simple page like ProductList,
>> > I have to define another list to show the image even there is only a
>> > dynamic image for every product
>> > The ProductList may look like
>> > // ProductList.java
>> > class ProductList{
>> > private List _productList;
>> > private List _imgList;
>> > ......
>> > }
>> > Oh god , so terrible codes.
>> > There are a lot of similar require my project.
>> > Can you give me more suggestion?
>> >
>> > Howard Lewis Ship 写道:
>> >
>> > > In order to answer this question, some background is needed.
>> > >
>> > > If you know the product's id (whatever you use, where it's SKU
>> number
>> > > or a
>> > > surrogate key) ... what is the exact process from going from that
>> to a
>> > > URL
>> > > suitable for an <img> tag?
>> > >
>> > > That is ... are the images stored in the database? Or are they on
>> the
>> > > file
>> > > system somewhere? If they are files on the file system, are those
>> files
>> > > mapped to a client-visible URL?
>> > >
>> > > In the latter case, you can do something like:
>> > >
>> > > <img t:id="productImage" src="prop:productImageURL"/>
>> > >
>> > > public String getProductImageURL() {
>> > > return "http://static.myco.com/product-images/"; + _productId +
>> ".gif";
>> > > }
>> > >
>> > >
>> > >
>> > > Assigning a t:id to a tag without specifying a component type
>> creates
>> > > an Any
>> > > component, a component that just renders whatever tag and informal
>> > > parameters you provide it. Here wer'e linking that to some Java
code
>> > > in the
>> > > corresponding page or component that computes the URL of the
product
>> > > based
>> > > on an instance variable. Probably your example is more complicated,
>> > > but you
>> > > get the idea.
>> > >
>> > > There's another approach used when the data is inside the database,
>> > > but we
>> > > can dive into that if the above solution is insufficient.
>> > >
>> > > Assets are useful for accessing resources inside the web
application
>> > > context, or on the classpath, and includes logic related to
>> > > localization ...
>> > > but it is not always appropriate when accessing resources that are
>> well
>> > > outside the web application itself.
>> > >
>> > > On 5/19/07, Allen Guo <[EMAIL PROTECTED]> wrote:
>> > >>
>> > >> Hi All,
>> > >>
>> > >> I want to show the ProductDetail page with product image. It looks
>> like
>> > >> <img src="p_001.jpg" />.
>> > >> You know, every product has different image name,so I need to pass
>> the
>> > >> string 'p_001.jpg' to the corresponding page.
>> > >> As result the img tag should look like <img
>> src="${product.image}"/>
>> or
>> > >> I can use Asset to do it.
>> > >>
>> > >> But I tried to do it using the first approach, exception occured.
>> > >> And I don't know how to the second approach.
>> > >> Can anyone give me an idea?
>> > >>
>> > >> Thank in advance
>> > >> Allen Guo
>> > >>
>> > >>
>> > >>
>> ---------------------------------------------------------------------
>> > >> 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]
>> >
>> >
>>
>>
>> --
>> Howard M. Lewis Ship
>> TWD Consulting, Inc.
>> Independent J2EE / Open-Source Java Consultant
>> Creator and PMC Chair, Apache Tapestry
>> Creator, Apache HiveMind
>>
>> Professional Tapestry training, mentoring, support
>> and project work. http://howardlewisship.com
>>
>
>
>


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




--
Howard M. Lewis Ship
TWD Consulting, Inc.
Independent J2EE / Open-Source Java Consultant
Creator and PMC Chair, Apache Tapestry
Creator, Apache HiveMind

Professional Tapestry training, mentoring, support
and project work.  http://howardlewisship.com

Reply via email to