Skip to main content


Showing posts from March, 2013

Spring MVC - Populating domain object (Form backing Object) in view and updating some properties

Sometimes we need to update the domain object partially. We get complete object from database but we have to update some fields of it using html form. In this situation, original Data Object is kept on the server and some fields are asked to be filled by user. In Sprint MVC, we have implemented feature that helps us to get it done. There is @ModelAttribute annotation that captures Bean object at server and maps its values to submitted form's fields. In following code, pupulateContact() method annotated with @ModelAttribute annotation. This make sure that this method is called before any @RequestMapping annotated method like open() and save() in this code. pupulateContact() method returns an object having some fields initialized. We want to get other fields from HTML form. After submission ,Contact Object will have all values in it. It remembers the initialized value and get updated with new values those are sent in request. Other will remain as it is. package  pack;

Understanding run time polymorphism of an object

Run-time polymorphism is the ability of an object to play multiple roles at run-time. See the following program where the object of Cal class will have different behaviors according the reference variable through which it is pointed. If we access Cal object using c, it has add() and sub() methods. If we access it using a reference variable then only add() method is accessible and same is for b variable that allows to access only sub() method. So in spite of having same object, It is playing different role according to the type of reference variable that is pointing it. //Example of polymorphism package  poly; interface  Adder {      void   add ( int  x, int  y ) ; } interface  Substractor {      void   sub ( int  x, int  y ) ; } class  Cal  implements  Adder,Substractor {     @Override      public   void   add ( int  a, int  b ){          System .out. println ( a + b ) ;      }     @Override      public   void   sub ( int  s, int  y ){          System .out. println