a) you should be using models to bind data instead of directly
iterating over listview's listitems
b) when using listview in a form you should call setreuseitems(true) on it.
-igor
On Mon, Jul 7, 2008 at 3:17 AM, Deepak_G <[EMAIL PROTECTED]> wrote:
>
> Hello,
>
> I am rendering a list view having multiple rows using wicket. In form
> submit(), I could retrive the data in below mentioned code but i am not sure
> whether it is right way of getting the changed data from the list view .
> Below is my code snippet attached. Please review the code and let me know
> the best practice.
>
> // LiConfig is application pojo
> private Form form;
> private ListView li_config_settings_row;
> private List<LiConfig> li_config_settings;// applicaton pojo list
> li_config_settings_row = new ListView("settingRow", li_config_settings) {
> protected void populateItem(ListItem item) {
> final LiConfig p = (LiConfig)
> item.getModelObject();
> item.setModel(new CompoundPropertyModel(p));
> //Some code to add
> components like Hidden fields, Text fields, Labels etc.
> }
> };
> form.add(li_config_settings_row);
>
> form = new Form("sectionPanelForm"){
> protected void onSubmit() {
> ArrayList<LiConfig> liConfigs = new
> ArrayList<LiConfig>();
> Iterator<ListItem> iterator =
> li_config_settings_row.iterator();
> while (iterator.hasNext()) {
> ListItem listItem =
> iterator.next();
> LiConfig l = new LiConfig();
> Iterator<Component>
> childIterator = listItem..iterator();
> boolean changed = false;
> while
> (childIterator.hasNext()) {
> Component c =
> childIterator.next();
> if
> (c.getId().equalsIgnoreCase("isChanged")) {
> if
> ((((HiddenField) c).getConvertedInput()
>
> .toString()).equalsIgnoreCase("1")) {
>
> changed = true;
> }
>
> }
> if
> (c.getId().equalsIgnoreCase("id")) {
> l.setId(new
> Integer(((HiddenField) c)
>
> .getConvertedInput().toString()));
> }
> if
> (c.getId().equalsIgnoreCase("fieldValue")) {
> l
>
> .setFieldValue(((TextField) c)
>
> .getConvertedInput() != null ? ((TextField) c)
>
> .getConvertedInput().toString()
>
> : "");
> }
>
> }
> if (changed) {
> liConfigs.add(l);
> }
> }
>
> if (liConfigs.size() != 0) {
> ArrayList<LiConfig>
> updatedList = new ArrayList();
> String changedValue;
> for (LiConfig li : liConfigs) {
> changedValue =
> li.getFieldValue();
> li =
> ConfigWizardhelper.getLiConfig(li.getId());
>
> li.setFieldValue(changedValue);
> updatedList.add(li);
>
> }
>
> ConfigWizardhelper.insertORUpdateLiConfigs(updatedList);
> }
> HashMap<String, String> param = new
> HashMap<String, String>();
> param.put("id", id);
>
> ConfigWizardPage.index = getIndex();
>
> setResponsePage(ConfigWizardPage.class);
> }
> };
> --
> View this message in context:
> http://www.nabble.com/How-to-get-the-data-altered-by-the-user-in-html-page--in-a-list-view-tp18313650p18313650.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]