I'll preface this by saying that I've been following a "recipe" that's "just
worked" for years, so I haven't had to make one work from scratch in ages.

However....

Your ValueEncoder will throw NPE's.  Have a look at the
HibernateEntityValueEncoder in the tapestry-hibernate module - it uses a
null-safe implementation.


JB


On Wed, Sep 21, 2011 at 12:40 AM, csckid <testnowsh...@gmail.com> wrote:

> Now I have add an encoder
> <form t:type="form">
>    <t:label for="members"/>:
>    <t:select t:id="members" value="membersName" model="MemberSelectModel"
> encoder="wholeSaleMemberEncoder" />
>     <t:submit value="save"/>
>  </form>
>
>
> public class WholeSaleMemberEncoder implements
> ValueEncoder<WholeSaleMember>, ValueEncoderFactory<WholeSaleMember> {
>
>        @Inject
>        private WholeSaleMemberDao wholeSaleMemberDao;
>        @Inject
>        private DatabaseDao databaseDao;
>
>    public String toClient(WholeSaleMember value) {
>        // return the given object's ID
>        return String.valueOf(value.getId());
>    }
>
>    public WholeSaleMember toValue(String id) {
>
>        // find the color object of the given ID in the database
>        return (WholeSaleMember) databaseDao.load(Long.parseLong(id),
> WholeSaleMember.class);
>    }
>
>        public ValueEncoder<WholeSaleMember> create(Class<WholeSaleMember>
> type) {
>                // TODO Auto-generated method stub
>                return this;
>         }
> }
>
>
>
> public class CreateWMemberTruck {
>
>
>        @Inject
>        private WholeSaleMemberDao wholeSaleMemberDao;
>        @Property
>         private WholeSaleMemberEncoder wholeSaleMemberEncoder;
>         @Property
>        private SelectModel memberSelectModel;
>        @Property
>        @Inject
>        private SelectModelFactory selectModelFactory;
>
>        @Property
>        private WholeSaleMember membersName;
>
>
>        void setupRender() {
>             // invoke my service to find all colors, e.g. in the database
>             List<WholeSaleMember> members =
> wholeSaleMemberDao.getWholeSaleMembers();
>
>             // create a SelectModel from my list of colors
>             memberSelectModel = selectModelFactory.create(members,
> "fName");
>        }
>
>        void onSuccess() {
>
>                System.out.println("\n\n\n"+membersName.getId()+"\n\n\n\n");
>
>        }
> }
>
> Now t:select is not populated, that page gives an exception
> org.apache.tapestry5.internal.services.RenderQueueException
> Render queue error in
> BeforeRenderTemplate[wholesalemember/CreateWMemberTruck:members]:
> org.apache.tapestry5.ioc.internal.util.TapestryException
>
> #
>
> activeComponents
>
>        * wholesalemember/CreateWMemberTruck (class
> com.kids.crm.pages.wholesalemember.CreateWMemberTruck)
>        * wholesalemember/CreateWMemberTruck:layout (class
> com.kids.crm.components.Layout)
>
> classpath:com/kids/crm/pages/wholesalemember/CreateWMemberTruck.tml, line 4
>           1     <html t:type="layout" title="Create Whole sale Member
> Truck"
>          2     t:sidebarTitle="Browse Wood"
>          3     xmlns:t="
> http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";
>          4     xmlns:p="tapestry:parameter">
>          5     <form t:type="form">
>
>           8     <t:label for="members"/>:
>          9     <t:select t:id="members" value="membersName"
> model="MemberSelectModel" encoder="wholeSaleMemberEncoder" />
>        * wholesalemember/CreateWMemberTruck:form (class
> org.apache.tapestry5.corelib.components.Form)
>
> classpath:com/kids/crm/pages/wholesalemember/CreateWMemberTruck.tml, line 5
>          1     <html t:type="layout" title="Create Whole sale Member Truck"
>          2     t:sidebarTitle="Browse Wood"
>          3     xmlns:t="
> http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";
>          4     xmlns:p="tapestry:parameter">
>          5     <form t:type="form">
>
>           8     <t:label for="members"/>:
>          9     <t:select t:id="members" value="membersName"
> model="MemberSelectModel" encoder="wholeSaleMemberEncoder" />
>           10    <t:submit value="save"/>
>         * wholesalemember/CreateWMemberTruck:members (class
> org.apache.tapestry5.corelib.components.Select)
>
> classpath:com/kids/crm/pages/wholesalemember/CreateWMemberTruck.tml, line 9
>           4     xmlns:p="tapestry:parameter">
>          5     <form t:type="form">
>
>           8     <t:label for="members"/>:
>          9     <t:select t:id="members" value="membersName"
> model="MemberSelectModel" encoder="wholeSaleMemberEncoder" />
>           10    <t:submit value="save"/>
>           11    </form>
>          12
>          13    <p:sidebar>
>          14    <t:pagelink
> page="wholesalemember/CreateWholeSaleMember">Create
> W.Sale Member</t:pagelink>
>
> location
>    classpath:com/kids/crm/pages/wholesalemember/CreateWMemberTruck.tml,
> line 9
>
> # java.lang.NullPointerException
>
> Hide uninteresting stack frames Stack trace
>
>        *
>
> org.apache.tapestry5.internal.util.SelectModelRenderer.option(SelectModelRenderer.java:51)
>
>
> --
> View this message in context:
> http://tapestry.1045711.n5.nabble.com/tapestry-select-model-tp4823674p4825110.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
>
>


-- 
Jonathan Barker
ITStrategic

Reply via email to