Hey, this worked! Thanks Musachy, the tip you provided solved the
problem I was facing for the last 3 days.

I really appreciate your time to post this information. It looks like
the display tag packs much more functionality than it seems.

On Mon, Jul 13, 2009 at 2:03 PM, Musachy Barroso<musa...@gmail.com> wrote:
> 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
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to