(Isn't it around where the iterator tag is in that source? I thought that *was* the OP's code this second barf of source.) Dave On Sat, Jan 12, 2013 at 4:04 PM, Chris Pratt wrote: > You said in your original post that you used the tag, > correct? Can I see how you used it? > (*Chris*) > > > On Sat, Jan 12, 2013 at 3:06 AM, fusillator wrote: > >> Sorry for my misunderstanding, I changed the code of the wiki tutorial >> about wildcard >> >> These is the view: >> >> <%@ page language="java" contentType="text/html; charset=UTF-8" >> pageEncoding="UTF-8"%> >> <%@ taglib prefix="s" uri="/struts-tags" %> >> > http://www.w3.org/TR/xhtml1/**DTD/xhtml1-transitional.dtd >> "> >> >> >> >> List of people >> >> >>

List of persons:

>> >>
    >> >>
  1. >> >> > value="id" /> >> > /> >> Edit >> Remove >>
  2. >>
    >>
>>
>> >> No person inserted >> >> >> Insert a new person >> >> >> >> and this is the action class: >> >> package org.apache.struts.tutorial.**wildcard.action; >> >> import java.util.Collection; >> //import java.util.List; >> import org.apache.struts.tutorial.**wildcard.service.**PersonService; >> import org.apache.struts.tutorial.**wildcard.model.Person; >> import org.apache.log4j.Logger; >> import com.opensymphony.xwork2.**ActionSupport; >> >> public class PersonAction extends ActionSupport { >> >> private static final long serialVersionUID = 1L; >> >> private static final Logger logger = Logger.getLogger(PersonAction.** >> class.getName()); >> >> private Collection people=PersonService.**getPeople(); >> private int code=-1; //parametro passato da view >> private Person personBean; >> private PersonService personService=new PersonService(); >> >> @Override >> public String execute(){ >> return SUCCESS; >> } >> >> public String edit(){ >> setPersonBean(personService.**getPerson(code)); >> return INPUT; >> } >> >> public String save(){ >> personService.savePerson(**getPersonBean()); >> return SUCCESS; >> } >> >> public String remove(){ >> personService.removePerson(**code); >> return SUCCESS; >> } >> >> public Collection getPeople() { >> return people; >> } >> >> public void setPeople(Collection people) { >> this.people = people; >> } >> >> public int getCode() { >> return code; >> } >> >> public void setCode(int code) { >> this.code = code; >> } >> >> public Person getPersonBean() { >> return personBean; >> } >> >> public void setPersonBean(Person personBean) { >> this.personBean = personBean; >> } >> >> } >> >> and my modified PersonService class: >> >> package org.apache.struts.tutorial.**wildcard.service; >> >> //import java.util.ArrayList; >> import java.util.Collection; >> //import java.util.List; >> import java.util.SortedMap; >> import java.util.TreeMap; >> >> import org.apache.log4j.Logger; >> import org.apache.struts.tutorial.**wildcard.model.Person; >> >> public class PersonService { >> >> private static final Logger logger = Logger.getLogger(** >> PersonService.class.getName())**; >> >> //static private List peopleList=new ArrayList(); >> static private SortedMap people=new >> TreeMap(); >> static { >> people.put(new Integer(1), new Person(1,"Paolino","Paperino")**); >> people.put(new Integer(2), new Person(2,"Paperon","De Paperoni")); >> people.put(new Integer(3), new Person(3,"Archimede","** >> Pitagorica")); >> //generateList(); >> } >> /* >> static void generateList(){ >> peopleList.clear(); >> for (Integer i : people.keySet()){ >> peopleList.add(people.get(i)); >> } >> } >> */ >> static public Collection getPeople(){ >> logger.debug(people.values()); >> logger.debug(people.values().**getClass().toString()); >> return people.values(); >> } >> >> public Person getPerson(int code){ >> if (code<0) >> return new Person(-1,"",""); >> else >> return people.get(new Integer(code)); >> } >> >> public void savePerson(Person person){ >> logger.debug(person); >> if (person.getId()>=0){ >> people.put(new Integer(person.getId()),**person); >> } else { >> int id = people.isEmpty() ? 1 : people.lastKey().intValue()+1; >> person.setId(id); >> people.put(new Integer(id),person); >> } >> //generateList(); >> } >> >> public void removePerson(int code){ >> people.remove(new Integer(code)); >> //generateList(); >> } >> >> } >> >> >> The mapping definitions are: >> >> >> /view.jsp >> /input.jsp >> >> >> The model Person is a pojo with 3 attributes: firstName, lastName, id >> >> thanks for the support >> >> Il 12/01/2013 11:50, Umesh Awasthi ha scritto: >> >> I believe what *Chris* has asked is to copy the code from your JSP page >>> >>> i believe you must be using tag in your JSP page to iterate >>> some list >>> so please copy that code from your JSP and provide here >>> >>> >>> >>> On Sat, Jan 12, 2013 at 4:16 PM, fusillator wrote: >>> >>> Hi Chris, not really sure how to find that code... Anyway this has been >>>> my >>>> steps: >>>> $ for lib in /opt/struts-2.3.7/lib/* ; do jar tvf $lib | grep tld && echo >>>> $lib; done >>>> 3349 Wed Aug 10 12:51:32 CEST 2005 META-INF/sitemesh-decorator.**** >>>> tld >>>> 3013 Sat May 15 11:55:14 CEST 2004 META-INF/sitemesh-page.tld >>>> /opt/struts-2.3.7/lib/****sitemesh-2.4.2.jar >>>> 346038 Tue Nov 06 08:13:06 CET 2012 META-INF/struts-tags.tld >>>> /opt/struts-2.3.7/lib/struts2-****core-2.3.7.jar >>>> 136496 Tue Nov 06 08:24:22 CET 2012 META-INF/struts-dojo-tags.tld >>>> /opt/struts-2.3.7/lib/struts2-****dojo-plugin-2.3.7.jar >>>> 752 Tue Nov 06 08:27:06 CET 2012 META-INF/tags/JsonPlugin.tld >>>> /opt/struts-2.3.7/lib/struts2-****json-plugin-2.3.7.jar >>>> 0 Tue May 13 21:39:54 CEST 2008 META-INF/tld/ >>>> 27808 Tue May 13 21:39:54 CEST 2008 META-INF/tld/tiles-jsp.tld >>>> /opt/struts-2.3.7/lib/tiles-****jsp-2.0.6.jar >>>> >>>> $ jar xvf /opt/struts-2.3.7/lib/struts2-****core-2.3.7.jar >>>> META-INF/struts-tags.tld >>>> \decompresso: META-INF/struts-tags.tld >>>> >>>> $ grep -n "iterator" META-INF/struts-tags.tld >>>> 4881: iterator >>>> >>>> and the tag definition in the tld file is: >>>> >>>> >>>> >>>> iterator >>>> org.apache.struts2.****views.jsp.IteratorTag >>>> JSP >>>> >>>> >>>> >>>> $ find src -name IteratorTag.java >>>> src/core/src/main/java/org/****apache/struts2/views/jsp/**** >>>> IteratorTag.java >>>> >>>> $ cat src/core/src/main/java/org/****apache/struts2/views/jsp/** >>>> IteratorTag.java >>>> /* >>>> * $Id: IteratorTag.java 741179 2009-02-05 16:55:14Z musachy $ >>>> * >>>> * Licensed to the Apache Software Foundation (ASF) under one >>>> * or more contributor license agreements. See the NOTICE file >>>> * distributed with this work for additional information >>>> * regarding copyright ownership. The ASF licenses this file >>>> * to you under the Apache License, Version 2.0 (the >>>> * "License"); you may not use this file except in compliance >>>> * with the License. You may obtain a copy of the License at >>>> * >>>> * http://www.apache.org/****licenses/LICENSE-2.0 >>>> >>>> > >>>> * >>>> * Unless required by applicable law or agreed to in writing, >>>> * software distributed under the License is distributed on an >>>> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY >>>> * KIND, either express or implied. See the License for the >>>> * specific language governing permissions and limitations >>>> * under the License. >>>> */ >>>> >>>> package org.apache.struts2.views.jsp; >>>> >>>> import javax.servlet.http.****HttpServletRequest; >>>> import javax.servlet.http.****HttpServletResponse; >>>> import javax.servlet.jsp.****JspException; >>>> >>>> import org.apache.struts2.components.****Component; >>>> import org.apache.struts2.components.****IteratorComponent; >>>> >>>> import com.opensymphony.xwork2.util.****ValueStack; >>>> >>>> /** >>>> * @see IteratorComponent >>>> */ >>>> public class IteratorTag extends ContextBeanTag { >>>> >>>> private static final long serialVersionUID = -1827978135193581901L; >>>> >>>> protected String statusAttr; >>>> protected String value; >>>> protected String begin; >>>> protected String end; >>>> protected String step; >>>> >>>> public Component getBean(ValueStack stack, HttpServletRequest req, >>>> HttpServletResponse res) { >>>> return new IteratorComponent(stack); >>>> } >>>> >>>> protected void populateParams() { >>>> super.populateParams(); >>>> >>>> IteratorComponent tag = (IteratorComponent) getComponent(); >>>> tag.setStatus(statusAttr); >>>> tag.setValue(value); >>>> tag.setBegin(begin); >>>> tag.setEnd(end); >>>> tag.setStep(step); >>>> } >>>> >>>> public void setStatus(String status) { >>>> this.statusAttr = status; >>>> } >>>> >>>> public void setValue(String value) { >>>> this.value = value; >>>> } >>>> >>>> public void setBegin(String begin) { >>>> this.begin = begin; >>>> } >>>> >>>> public void setEnd(String end) { >>>> this.end = end; >>>> } >>>> >>>> public void setStep(String step) { >>>> this.step = step; >>>> } >>>> >>>> public int doEndTag() throws JspException { >>>> component = null; >>>> return EVAL_PAGE; >>>> } >>>> >>>> public int doAfterBody() throws JspException { >>>> boolean again = component.end(pageContext.****getOut(), >>>> getBody()); >>>> >>>> if (again) { >>>> return EVAL_BODY_AGAIN; >>>> } else { >>>> if (bodyContent != null) { >>>> try { >>>> bodyContent.writeOut(****bodyContent.****getEnclosingWriter()); >>>> } catch (Exception e) { >>>> throw new JspException(e.getMessage()); >>>> } >>>> } >>>> return SKIP_BODY; >>>> } >>>> } >>>> >>>> } >>>> >>>> Thanks a lot for your help. >>>> >>>> >>>> >>>> >>>> >>>> Il 11/01/2013 20:21, Chris Pratt ha scritto: >>>> >>>> Can you cut and paste your code into the email so we can >>>>> see? >>>>> (*Chris*) >>>>> >>>>> >>>>> On Fri, Jan 11, 2013 at 11:12 AM, fusillator >>>>> wrote: >>>>> >>>>> Hi all, I'm new to struts2/java matters, so be sympathetic please. >>>>> >>>>>> I've a question about tag >>>>>> >>>>>> I recently used it to loop on a Iterable collection of type >>>>>> java.util.TreeMap$Values retrieved by the method >>>>>> java.util.TreeMap.values() >>>>>> >>>>>> getting the following cast exception: >>>>>> >>>>>> 2013-01-11 18:45:00,520 DEBUG org.apache.struts.tutorial.** >>>>>> wildcard.service.******PersonService.getPeople:33 [Person [1: Paolino >>>>>> Paperino], Person [2: Paperon De Paperoni], Person [3: Archimede >>>>>> Pitagorica]] >>>>>> 2013-01-11 18:45:00,523 DEBUG org.apache.struts.tutorial.** >>>>>> wildcard.service.******PersonService.getPeople:34 class >>>>>> java.util.TreeMap$Values >>>>>> 2013-01-11 18:45:00,523 DEBUG org.apache.struts.tutorial.** >>>>>> wildcard.service.******PersonService.getPeople:34 class >>>>>> java.util.TreeMap$Values >>>>>> gen 11, 2013 6:45:01 PM org.apache.jasper.compiler.***** >>>>>> *TldLocationsCache >>>>>> tldScanJar >>>>>> WARNING: Caught an exception while evaluating expression >>>>>> 'people.isEmpty' >>>>>> against value stack >>>>>> java.lang.ClassCastException: java.util.TreeMap$Values cannot be cast >>>>>> to >>>>>> java.util.Set >>>>>> at ognl.SetPropertyAccessor.******getProperty(** >>>>>> SetPropertyAccessor.java:47) >>>>>> at com.opensymphony.xwork2.ognl.******accessor.** >>>>>> XWorkCollectionPropertyAccesso******r.getProperty(** >>>>>> XWorkCollectionPropertyAccesso******r.java:93) >>>>>> at ognl.OgnlRuntime.getProperty(******OgnlRuntime.java:2300) >>>>>> >>>>>> The used variable is reported by log4j. >>>>>> Is there any restriction on the iterator tags? >>>>>> Could someone suggest me a tutorial/howto about ognl/value stack? >>>>>> >>>>>> Best regards >>>>>> >>>>>> >>>>>> >>>>>> ------------------------------******--------------------------**--** >>>>>> --**--------- >>>>>> To unsubscribe, e-mail: user-unsubscribe@struts.****apac**he.org< >>>>>> http://apache.org**> >>>>>> < >>>>>> user-unsubscribe@**struts.apache.org >>>>>> > >>>>>> For additional commands, e-mail: user-help@struts.apache.org >>>>>> >>>>>> >>>>>> >>>>>> ------------------------------****----------------------------** >>>> --**--------- >>>> To unsubscribe, e-mail: user-unsubscribe@struts.**apac**he.org >>>> >>>> > >>>> For additional commands, e-mail: user-help@struts.apache.org >>>> >>>> >>>> >>> >> >> ------------------------------**------------------------------**--------- >> To unsubscribe, e-mail: user-unsubscribe@struts.**apache.org >> >> For additional commands, e-mail: user-help@struts.apache.org >> >> -- e: davelnewton@gmail.com m: 908-380-8699 s: davelnewton_skype t: @dave_newton b: Bucky Bits g: davelnewton so: Dave Newton --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscribe@struts.apache.org For additional commands, e-mail: user-help@struts.apache.org