Hi I think you have to specify the encoder on the form element too.
2009/12/28 antb59 <ant...@gmail.com> > > Hello, > > I'm trying to make a tapestry component that looks like a poll. > This component will contain a question, a list of suggestions, and a button > to vote. > I didn't want to use Ajax at first, and the click on the vote button will > reload the whole page for example. > > The question and the list of suggestions were load from my database, and I > have no problem to display them correctly on my form. > If no radio button is selected, I can click on the vote button, it works. > The problem occurs when I'm trying to submit the form and when a radio > button is selected. > > Here is the code of my .tml file : > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> > <t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd > " > xmlns:p="tapestry:parameter"> > <t:form t:id="survey_form"> > <h4>${formSurvey.category.label}</h4> > <h5>${formSurvey.startDate}</h5> > <p id="surveyLabel">${formSurvey.label}</p> > > <t:radiogroup t:id="suggestionRG" > value="selectedSuggestion"> > <t:loop source="suggestions" > value="suggestionLoopValue" > encoder="suggestionEncoder"> > <t:radio t:id="radio" > value="suggestionLoopValue"/> > <t:label > for="radio">${suggestionLoopValue.label}</t:label> > </t:loop> > </t:radiogroup> > > <t:submit id="surveyVote" t:id="vote" > image="context:images/vote_button.gif" /> > </t:form> > </t:container> > > > > And here is the code of my java file : > > @SuppressWarnings("unused") > public class Survey { > > @Parameter(required=true) > private int surveyId; > > @Property > @Persist("SESSION") > private com.titans.surveys.model.Survey formSurvey; > > @Inject > private ISurveyManager mSurveyManager; > > @Persist > @Property > private Suggestion selectedSuggestion; > > @Property > private Suggestion suggestionLoopValue; > > @Property > @Persist > private List<Suggestion> suggestions; > > @Property > private ValueEncoder<Suggestion> suggestionEncoder = new > ValueEncoder<Suggestion> () { > public String toClient (Suggestion pSuggestion) { > return (String.valueOf (suggestions.indexOf > (pSuggestion))); > } > public Suggestion toValue (String pId) { > return (suggestions.get (Integer.parseInt (pId))); > } > }; > > > public void beginRender() { > this.formSurvey = mSurveyManager.findById(surveyId); > if (this.formSurvey == null) { > sLogger.error("Unable to retrieve survey with id = " > + surveyId); > } > else { > if ((this.suggestions == null) > ||this.suggestions.isEmpty()) > this.suggestions = new > ArrayList<Suggestion>(formSurvey.getSuggestions()); > } > } > > } > > > Here is the ComponentEventException throwed : > > Could not find a coercion from type java.lang.String to type > com.titans.surveys.model.Suggestion. Available coercions: Double --> Float, > Float --> Double, Long --> Boolean, Long --> Byte, Long --> Double, Long > --> > Integer, Long --> Short, Number --> Long, Object --> Object[], Object --> > String, Object --> java.util.List, Object[] --> java.util.List, String --> > Boolean, String --> Double, String --> Long, String --> java.io.File, > String > --> java.math.BigDecimal, String --> java.math.BigInteger, String --> > java.text.DateFormat, String --> java.util.regex.Pattern, String --> > org.apache.tapestry5.Renderable, String --> > org.apache.tapestry5.SelectModel, String --> > org.apache.tapestry5.corelib.LoopFormState, String --> > org.apache.tapestry5.corelib.data.BlankOption, String --> > org.apache.tapestry5.corelib.data.GridPagerPosition, String --> > org.apache.tapestry5.corelib.data.InsertPosition, String --> > org.apache.tapestry5.ioc.Resource, String --> > org.apache.tapestry5.ioc.util.TimeInterval, boolean[] --> java.util.List, > byte[] --> java.util.List, char[] --> java.util.List, double[] --> > java.util.List, float[] --> java.util.List, int[] --> java.util.List, > java.math.BigDecimal --> Double, java.util.Collection --> Boolean, > java.util.Collection --> Object[], java.util.Collection --> > org.apache.tapestry5.grid.GridDataSource, java.util.List --> > org.apache.tapestry5.SelectModel, java.util.Map --> > org.apache.tapestry5.SelectModel, long[] --> java.util.List, null --> > Boolean, null --> org.apache.tapestry5.grid.GridDataSource, > org.apache.tapestry5.ComponentResources --> > org.apache.tapestry5.PropertyOverrides, > org.apache.tapestry5.PrimaryKeyEncoder --> > org.apache.tapestry5.ValueEncoder, org.apache.tapestry5.Renderable --> > org.apache.tapestry5.Block, org.apache.tapestry5.Renderable --> > org.apache.tapestry5.runtime.RenderCommand, > org.apache.tapestry5.ioc.util.TimeInterval --> Long, > org.apache.tapestry5.runtime.ComponentResourcesAware --> > org.apache.tapestry5.ComponentResources, short[] --> java.util.List > > > > Could someone know what I'm doing wrong ? > > regards, > Antoine. > -- > View this message in context: > http://old.nabble.com/Loop%2C-RadioGroup-and-Coercion-tp26944581p26944581.html > Sent from the Tapestry - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > >