In addition to calling methods and Hibernate Validator, it’s also very simple to bind to a context variable and update it from JavaFX. A context variable is any variable inside a scope on the server.
Server
Seam component:
@Name ("shop") @Scope (ScopeType.SESSION) public class Store { IceCream iceCream; // getter and setter @Create public void init (){ iceCream = new IceCream(); iceCream.setName("Best ice cream"); iceCream.setFlavors(2); } }
Model:
@Entity @Name ("icecream") public class IceCream implements java.io.Serializable{ @Max(value=5, message="Sorry, you can't have more than {value} flavors") private Integer flavors; private String name; // getters and setters }
Client
Model:
public class IceCream implements java.io.Serializable{ private String name; private Integer flavors; // setters and getters }
BindingManager interface:
public interface BindingManager { public String commit(String componentName, Object value); public Object getObject(String name); }
public class IceCreamServiceFactory { public static BindingManager getBindingManager() { return (BindingManager) FXServiceFactory.getService(BindingManager.class, "com.exadel.flamingo.service.binding.bindingManager"); } public static String commit (String componentName, Object value){ return getBindingManager().commit(componentName, value); } public static IceCream getIceCream (String componentName){ return (IceCream)getBindingManager().getObject(componentName); } }
JavaFX script:
CookieHandler.setDefault(new CookieManager(null,CookiePolicy.ACCEPT_ALL)); FXServiceFactory.URL = "http://localhost:8080/server-javafx/seam/resource/hessian/"; FX.println("Getting ice cream from server"); var iceCream = IceCreamServiceFactory.getIceCream('shop.iceCream'); FX.println (" {iceCream}"); iceCream.setName ("Gelato"); iceCream.setFlavors(4); FX.println("Starting commit"); IceCreamServiceFactory.commit("shop.iceCream", iceCream); FX.println("Getting ice cream from the server after update"); FX.println (" {IceCreamServiceFactory.getIceCream('shop.iceCream')}");
Line 5: Getting ice cream from the server (binding to context variable)
Line 8-9: Making changes to ice cream
Line 12: Committing changes to the server
Line 14: Getting the updated object from the server
Output:
Getting ice cream from server Name: Best ice cream, flavors: 2 Starting commit Getting ice cream from the server after update Name: Gelato, flavors: 4
That’s it.
Leave a Reply