Thanks. So, if I wanted to access a particular property (say this property is called mark) of an "entry" object which I am iterating over, I would do something like the following:
<display:table name="goalToAchieve.entries" requestURI="" uid="thisGoal"> <display:column property="entry" /> <display:column property="date" sortable="true" defaultorder="ascending" title="TimeStamp"/> <display:column property="mark" /> <display:column> <a href="<s:url action='DeleteEntryForm' escapeAmp="false"> <s:param name="name" value="%{goalToAchieve.owner.fullName}" /> <s:param name="id" value="%{goalToAchieve.id}" /> <s:param name="date" value="#attr.entry.mark" /> </s:url> ">Remove</a> </display:column> So, I could pass mark as a url param via s:url within the display tag? Thanks for the information! On Mon, Jul 13, 2009 at 1:08 PM, Musachy Barroso<musa...@gmail.com> wrote: > Assuming that each entry is named "entry" by displayTag, you can > access it using "#attr.entry" (or "#attr['entry']") to access it from > the S2 tags. > > musachy > > On Mon, Jul 13, 2009 at 10:27 AM, Dimitrios > Christodoulakis<dimi....@gmail.com> wrote: >> Yes, that is exactly the case, hmm.. Although, how is the >> display:table tag finds the collection in the first place? >> >> Supposedly the display has some way of reaching the valuestack, it can >> even resolve the deeper notation <display:table >> name="goalToAchieve.entries" >> >> However, I will switch back to s:iterator to test if the syntax >> suggested will work. I mainly used the display tag as a quick way to >> sort the collection, but if I can't access the properties of the >> objects I am iterating over, it isn't of much use in this case >> >> On Mon, Jul 13, 2009 at 12:20 PM, Greg Lindholm<greg.lindh...@gmail.com> >> wrote: >>> OK, I see the problem now... you are not using <s:iterator> to go thru the >>> entries, you are using <display:table>. >>> >>> The syntax suggested will not work since <display:table> does not know >>> anything about the value stack.The <s:param name="mark" value="%{mark}" /> >>> uses the value stack to resolve 'mark' which will not work here, you will >>> need to replace %{mark} with the right syntax to work with <display:table> >>> iterator. >>> >>> And I don't know anything about <display:table> so you will need to look up >>> how to access the properties of the entities you are iterating over so as to >>> build the URL. >>> >>> >>> On Mon, Jul 13, 2009 at 12:28 PM, Dimitrios Christodoulakis < >>> dimi....@gmail.com> wrote: >>> >>>> I made the changes, but the view source indicates that the param >>>> "mark" is not passed. >>>> >>>> The url linked is formed like this: >>>> >>>> /secure/DeleteEntryForm.action?name=firstName+lastName&id=1 >>>> >>>> The name and id params are fields of the parent object, the one >>>> containing the collection. >>>> >>>> Actually, I tried with all fields taken from the collection object, >>>> like entry, and date but none gets passed as a param. Only properties >>>> exposed by the parent object, goalToAchieve are passed, shouldn't I be >>>> able to point to a field within a collection object too? >>>> >>>> It looks like individual collection object properties can be viewed >>>> using the iterator/display, but cannot be "captured" or passed as >>>> parameters for any other uses... unless I am missing something, or >>>> doing something wrong. >>>> >>>> >>>> On Mon, Jul 13, 2009 at 10:50 AM, Greg Lindholm<greg.lindh...@gmail.com> >>>> wrote: >>>> > Looks like you need to change entry.mark to just mark and remove the >>>> > <s:property value="%{entry}"/>. Also you probably don't need to pass both >>>> > the name and id of the parent object. >>>> > >>>> > <a href="<s:url action='DeleteEntryForm' var="entry" escapeAmp="false"> >>>> > <s:param name="id" value="%{goalToAchieve.id}" /> >>>> > <s:param name="mark" value="%{mark}" /> >>>> > </s:url> >>>> > ">Remove</a> >>>> > >>>> > >>>> > On Mon, Jul 13, 2009 at 10:48 AM, Dimitrios Christodoulakis < >>>> > dimi....@gmail.com> wrote: >>>> > >>>> >> Thanks for letting me know. Alright, so: >>>> >> >>>> >> This is the parent class: >>>> >> >>>> >> @Entity >>>> >> public class GoalToAchieve { >>>> >> @Id @GeneratedValue >>>> >> private Long id; >>>> >> >>>> >> @org.hibernate.annotations.CollectionOfElements >>>> >> @JoinTable (name="GoalToAchieve_entry", >>>> >> joincolum...@joincolumn(name="goalToAchieve_id")) >>>> >> private Set<JournalEntry> entries = new HashSet<JournalEntry>(); >>>> >> >>>> >> public Set<JournalEntry> getEntries() { >>>> >> return entries; >>>> >> } >>>> >> public void setEntries(SortedSet<JournalEntry> entries) { >>>> >> this.entries = entries; >>>> >> } >>>> >> >>>> >> public void addEntry(JournalEntry newEntry){ >>>> >> entries.add(newEntry); >>>> >> } >>>> >> >>>> >> public void deleteEntry(JournalEntry entry){ >>>> >> entries.remove(entry); >>>> >> } >>>> >> ..plus some other standard fields with getters and setters >>>> >> >>>> >> This is the child-class: >>>> >> >>>> >> @Embeddable >>>> >> public class JournalEntry { >>>> >> @org.hibernate.annotations.Parent >>>> >> private GoalToAchieve goalToAchieve; >>>> >> >>>> >> @Column >>>> >> private Long mark; >>>> >> public Long getMark() { >>>> >> return mark; >>>> >> } >>>> >> public void setMark(long mark){ >>>> >> this.mark = mark; >>>> >> } >>>> >> >>>> >> @Column(length = 255, nullable = false) >>>> >> private String entry; >>>> >> >>>> >> @Temporal(TemporalType.TIMESTAMP) >>>> >> @Column(nullable = false, updatable = false) >>>> >> private Date insertDate = new Date(); >>>> >> >>>> >> ..plus the rest getters and setters >>>> >> >>>> >> And this this the jsp part where I display the collection: >>>> >> >>>> >> <s:if test="goalToAchieve.entries.size > 0"> >>>> >> <display:table name="goalToAchieve.entries" requestURI="" >>>> uid="thisGoal"> >>>> >> <display:column property="entry" /> >>>> >> <display:column property="date" sortable="true" >>>> >> defaultorder="ascending" title="TimeStamp"/> >>>> >> <display:column property="mark" /> >>>> >> <display:column> >>>> >> <a href="<s:url action='UpdateEntryForm'> >>>> >> <s:param name="name" value="%{goalToAchieve.owner.fullName}" /> >>>> >> <s:param name="mark" value="#mark" /> >>>> >> </s:url> >>>> >> ">Edit</a> >>>> >> </display:column> >>>> >> <display:column> >>>> >> <a href="<s:url action='DeleteEntryForm' var="entry" escapeAmp="false"> >>>> >> <s:param name="name" value="%{goalToAchieve.owner.fullName}" /> >>>> >> <s:param name="id" value="%{goalToAchieve.id}" /> >>>> >> <s:param name="mark" value="entry.mark" /> >>>> >> <s:property value="%{entry}"/> >>>> >> </s:url> >>>> >> ">Remove</a> >>>> >> </display:column> >>>> >> </display:table> >>>> >> </s:if> >>>> >> >>>> >> ..and the delete action, which should take an entry reference and >>>> >> remove it from the collections looks like this: >>>> >> >>>> >> public class DeleteEntry extends ActionSupport{ >>>> >> public String execute(){ >>>> >> goalToAchieve.deleteEntry(entry); >>>> >> >>>> >> return SUCCESS; >>>> >> } >>>> >> >>>> >> private JournalEntry entry; >>>> >> private GoalToAchieve goalToAchieve; >>>> >> private long id; >>>> >> >>>> >> ... + getters and setters >>>> >> >>>> >> I guess right now, my problem has become how to pass a parameter >>>> >> referring to en entry (the mark field) to the delete action. Next, I >>>> >> would do a lookup within the action to find the entry object and >>>> >> remove it from the parent object collection, by calling >>>> >> deleteEntry(JournalEntry entry) >>>> >> >>>> >> On Mon, Jul 13, 2009 at 9:16 AM, Greg Lindholm<greg.lindh...@gmail.com> >>>> >> wrote: >>>> >> > You are not providing enough information for anyone to help you. Since >>>> >> you >>>> >> > have changed your object and the jsp you had better include them with >>>> any >>>> >> > request. >>>> >> > >>>> >> > >>>> >> > On Mon, Jul 13, 2009 at 9:51 AM, Dimitrios Christodoulakis < >>>> >> > dimi....@gmail.com> wrote: >>>> >> > >>>> >> >> Yes, that is a great suggestion actually. What I did was to add a new >>>> >> >> field based >>>> >> >> System.currentTimeMillis(), but the problem is adding it as a url >>>> >> >> parameter. >>>> >> >> >>>> >> >> For example, I am trying to add it as a url parameter below: >>>> >> >> >>>> >> >> <a href="<s:url action='UpdateEntryForm'> >>>> >> >> <s:param name="name" value="%{goalToAchieve.owner.fullName}" /> >>>> >> >> <s:param name="mark" value="%{mark}" /> >>>> >> >> </s:url> >>>> >> >> ">Edit</a> >>>> >> >> >>>> >> >> But, the only param passed is the fullName. The mark is not added to >>>> >> >> the url string. I think this is because the only object available on >>>> >> >> the valuestack is goalToAchieve, and using deeper notation I can >>>> >> >> reference as deep as the "entries" collection. But not to fields of >>>> >> >> each entry object. In other words, the display or iterator help me >>>> >> >> view the collection objects, but not extract and use any of their >>>> >> >> fields... I am not sure why this is happening, or if I am doing >>>> >> >> something wrong. >>>> >> >> >>>> >> > >>>> >> >>>> >> --------------------------------------------------------------------- >>>> >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >>>> >> For additional commands, e-mail: user-h...@struts.apache.org >>>> >> >>>> >> >>>> > >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >>>> For additional commands, e-mail: user-h...@struts.apache.org >>>> >>>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >> For additional commands, e-mail: user-h...@struts.apache.org >> >> > > > > -- > "Hey you! Would you help me to carry the stone?" Pink Floyd > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > For additional commands, e-mail: user-h...@struts.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org