java - How to Create a dependable palette in Wicket -
i have created palette in wicket , i'm able populate palette left side window. want create options in palette dynamic, able same. problem palette not getting populate selected options. have dropdown above palette, depending on alternative selected want populate palette.
for illustration (dropdown(role) values): 1.scenario: dropdown --> tl,manager,se,sse pallete --> there no values, @ time of creating role tl, there skill selected in rite window of palette. assume tl role created 4 skills outof 10 skills. 2.scenario: want edit role tl, in case when ever take role tl, palette should populate in such away selected should @ right , available should @ left. failing in sec scenario.
here code:
public class dropdownchoicepage extends webpage { private string selectedmake; private final map<string, list<string>> modelsmap = new hashmap<string, list<string>>(); private list<string> selected = new arraylist<string>(); private string selectedengine = "google"; public dropdownchoicepage(final pageparameters parameters) { add(new feedbackpanel("feedback")); modelsmap.put("audi", arrays.aslist(new string[] { "a4", "a6", "tt" })); modelsmap.put("cadillac", arrays.aslist(new string[] { "cts", "dts", "escalade", "srx","deville" })); modelsmap.put("ford", arrays.aslist(new string[] { "crown", "escape", "expedition","explorer", "f-150" })); imodel<list<? extends string>> makechoices = new abstractreadonlymodel<list<? extends string>>() { private static final long serialversionuid = 1l; @override public list<string> getobject() { set<string> keys = modelsmap.keyset(); list<string> list = new arraylist<string>(keys); homecoming list; } }; imodel<list<? extends string>> palettechoices = new abstractreadonlymodel<list<? extends string>>(){ private static final long serialversionuid = 1l; @override public list<? extends string> getobject() { list<string> models = modelsmap.get(selectedmake); if (models == null) { models = collections.emptylist(); }else if("ford".equals(selectedmake)){ selected.add("crown"); selected.add("escape"); } homecoming models; } }; final dropdownchoice<string> makes = new dropdownchoice<string>("makes",new propertymodel<string>(this, "selectedmake"), makechoices); ichoicerenderer<string> renderer = new choicerenderer<string>(); final palette<string> palette = new palette<string>("palette", new listmodel<string>(selected), palettechoices, renderer, 10, true); palette.setoutputmarkupid(true); makes.add(new ajaxformcomponentupdatingbehavior("onchange") { private static final long serialversionuid = 1l; @override protected void onupdate(ajaxrequesttarget target) { selected = new arraylist<string>(); target.addcomponent(palette); system.out.println("ajaxformcomponentupdatingbehavior(\"onchange\")"); system.out.println("selected make:"+selectedmake); } }); form<?> form = new form<void>("form") { private static final long serialversionuid = 1l; @override protected void onsubmit() { info("selected search engine : " + selectedengine); selected = new arraylist<string>(); } }; add(form); form.add(palette); form.add(makes); } } can please help me out in sec scenario,i.e populating both left , right windows of palette available , selected values on alter event of drop down.
thanks, saran.
i think there 2 main problems in code prevent sec scenario work correctly:
(1) in onchange ajax behavior, next code not update listmodel of selected choices:
selected = new arraylist<string>(); try instead:
selected.clear(); (2) code add together selected choices list should in ajax behavior, i.e.:
makes.add(new ajaxformcomponentupdatingbehavior("onchange") { private static final long serialversionuid = 1l; @override protected void onupdate(ajaxrequesttarget target) { selected.clear(); list<string> alreadyselected = getalreadyselectedchoicesbasedondropdownvalue(); selected.addall(alreadyselected); //... } } where getalreadyselectedchoicesbasedondropdownvalue homecoming new list of selected choices, like:
list<string> getalreadyselectedchoicesbasedondropdownvalue() { if("ford".equals(selectedmake)){ homecoming arrays.aslist("crown", "escape"); } } java wicket wicket-1.5 wicket-6 wicketstuff
No comments:
Post a Comment