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

Reply via email to