You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by "Mathias P.W Nilsson" <ma...@snyltarna.se> on 2009/03/27 16:53:05 UTC

Compound property model

Hi,


When testing this the user in the onSubmit is null. I load a list of
Connectors and make an CompoundPropertyModel for the list. Every connector
has a user. How can I achive this so that the list is populated with users
in the onSubmit()?

package se.sosalarm.planner.web.page.chain.connector;


import java.util.List;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;

import se.sosalarm.planner.entities.chain.connector.Connector;
import se.sosalarm.planner.entities.user.User;
import se.sosalarm.planner.service.ConnectorService;
import se.sosalarm.planner.service.UserService;



public class ConfigureWindow extends WebPage {

    private static final long serialVersionUID = 1L;

    @SpringBean( name = "connectorService" )
    private ConnectorService connectorService;

    @SpringBean( name = "userService" )
    private UserService userService;
   



	public UserService getUserService() {
		return userService;
	}


	public ConnectorService getConnectorService() {
		return connectorService;
	}


	public void setConnectorService(ConnectorService connectorService) {
		this.connectorService = connectorService;
	}


	private Connector connector;


    public ConfigureWindow(final IModel<Connector> model) {
        this.connector = model.getObject();
        
        IModel imo = new LoadableDetachableModel(){

			@Override
			protected Object load() {
			 return  getConnectorService().getChilds(connector);
			}
        	
        };
        
       Form configureForm = new Form( "configureForm" );
       
       final ListView view = new ListView( "userView" ,  new
CompoundPropertyModel( imo ) ){

		@Override
		protected void populateItem(final ListItem item) {
			
			item.setModel(new CompoundPropertyModel(item.getModel().getObject()));
			final Connector c = (Connector) item.getModelObject();
			IModel ju = new LoadableDetachableModel(){

				@Override
				protected Object load() {
					return getUserService().getAvailableUsers( c );
				}
				
			};
			
			
			DropDownChoice userChoice = new DropDownChoice( "user", 
item.getModel(),ju  );
			item.add( userChoice );
			item.add( new Label( "name" ));
		}
    	   
       };
       
       AjaxSubmitLink submit = new AjaxSubmitLink( "submit" , configureForm 
){

		@Override
		protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
			List<Connector> connectors = (List<Connector>)view.getModelObject();
			System.out.println( view.getModelObject() );
			
			for( Connector c : connectors ){
				if( c.getUser() != null ){
					System.out.println( c.getName() + ":" + c.getUser().getFullName() );
				}
				
			}
			
		}
    	   
       };
       configureForm.add( submit );
       configureForm.add( view );
       add( configureForm );

    }

   
}
-- 
View this message in context: http://www.nabble.com/Compound-property-model-tp22744472p22744472.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org