Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6875201
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T04:17:32+00:00 2026-05-27T04:17:32+00:00

I have a domain object which has a collection of primitive values, which represent

  • 0

I have a domain object which has a collection of primitive values, which represent the primary keys of another domain object (“Person”).

I have a Wicket component that takes IModel<List<Person>>, and allows you to view, remove, and add Persons to the list.

I would like to write a wrapper which implements IModel<List<Person>>, but which is backed by a PropertyModel<List<Long>> from the original domain object.

View-only is easy (Scala syntax for brevity):

class PersonModel(wrappedModel: IModel[List[Long]]) extends LoadableDetachableModel[List[Person]] {
   @SpringBean dao: PersonDao =_
   def load: List[Person] = {
       // Returns a collection of Persons for each id
       wrappedModel.getObject().map { id: Long =>
          dao.getPerson(id)
       }
   }
}

But how might I write this to allow for adding and removing from the original List of Longs?

Or is a Model not the best place to do this translation?

Thanks!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T04:17:33+00:00Added an answer on May 27, 2026 at 4:17 am

    You can do something like this:

    class PersonModel extends Model<List<Person>> {
    
        private transient List<Person> cache;
        private IModel<List<String>> idModel;
    
        public PersonModel( IModel<List<String>> idModel ) {
          this.idModel = idModel;
        }
    
        public List<Person> getObject() {
          if ( cache == null ) {
            cache = convertIdsToPersons( idModel.getObject() );
          return cache;
        }
    
        public void setObject( List<Person> ob ) {
          cache = null;
          idModel.setObject( convertPersonsToIds( ob ) );
        }
    
    }
    

    This isn’t very good code but it shows the general idea. One thing you need to consider is how this whole thing will be serialised between requests, you might be better off extending LoadableDetachableModel instead.

    Another thing is the cache: it’s there to avoid having to convert the list every time getObject() is called within a request. You may or may not need it in practice (depends on a lot of factors, including the speed of the conversion), but if you use it, it means that if something else is modifying the underlying collection, the changes may not be picked up by this model.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a domain object that has an attribute which is a collection containing
I have a XPO domain object Order which has a association with OrderLine. In
I have a domain model object which has properties of type System.DateTimeOffset. I'm using
I have this huge domain object(say parent) which contains other domain objects. It takes
I have a domain object that has been auto generated for me by MyGeneration.
I have a basic domain object, say like Person or Campaign or Event that
I have a ViewModel which encapsulates a datasource which is a domain object. The
I have a web page which uses NHibernate to load a domain object. The
I have a property on my domain object which is exposed as this: public
I have a domain object that has a couple of Uri properties that need

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.