Wire Variables"

From Documentation
Line 31: Line 31:
  
 
<source lang="java" high="2">
 
<source lang="java" high="2">
public class PasswordSetter extends GenericFowardComposer {
+
public class PasswordSetter extends SelectorComposer {
     private User user; //wired automatically if user is a spring-managed bean
+
    @WireXel
 +
     private User user;
 +
    @Wire("#password")
 
     private Textbox password; //wired automatically if there is a textbox named password
 
     private Textbox password; //wired automatically if there is a textbox named password
  
     public void onClick@submit() {
+
    @Listen("onClick=#submit")
 +
     public void submit() {
 
         user.setPassword(password.getValue());
 
         user.setPassword(password.getValue());
 
     }
 
     }

Revision as of 08:59, 7 December 2011

Wiring Sequence

GenericForwardComposer will wire members defined in the composer. Here is the sequence:

  1. It searches any setters if its name matches any of the following
    1. Any fellow with the same name (Component.getFellow(String))
    2. Any variable defined in Page.addVariableResolver(VariableResolver) with the same name
    3. Any variable defined in zscript with the same name
    4. Any implicit object with the same name
  2. Then, it searches any field to see if it matches any fellow, any variable,... the same as the above.

Wire Components

CSS3 Selectors

Wire Variables defined Variable Resolver

Wire Spring-managed Beans

Because the variable resolver will be checked when wiring a variable, you could wire a managed bean by declaring a built-in variable resolved called DelegatingVariableResolver.

<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<window apply="foo.MyComposer">
...
    <textbox id="password"/>
...
    <button id="submit" label="Change"/>
</window>

Then, if a data member's name matches a Spring-managed bean, it will be wired automatically too. For example,

public class PasswordSetter extends SelectorComposer {
    @WireXel
    private User user;
    @Wire("#password")
    private Textbox password; //wired automatically if there is a textbox named password

    @Listen("onClick=#submit")
    public void submit() {
        user.setPassword(password.getValue());
    }
}

Wire Variables defined in zscript

Version History

Last Update : 2011/12/07


Version Date Content
     



Last Update : 2011/12/07

Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License.