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