Oups, it's the radiogroup that need it :)

2009/12/28 cordenier christophe <christophe.corden...@gmail.com>

> 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
>>
>>
>

Reply via email to