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