The current row used by displaytag is pushed under the name set in uid, so you could do this:
<display:table name="goalToAchieve.entries" requestURI="" uid="thisGoal"> <display:column> <a href="<s:url action='DeleteEntryForm' escapeAmp="false"> <s:param name="date" value="#attr.thisGoal.mark" /> </s:url> ">Remove</a> </display:column> musachy On Mon, Jul 13, 2009 at 11:17 AM, Dimitrios Christodoulakis<dimi....@gmail.com> wrote: > 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 > > -- "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