Como usar anotações ZK
-
26-09-2019 - |
Pergunta
Estou usando o ZK 5.0.3. Quero usar a seguinte encadernação da anotação como título de uma região "centro" de uma fronteira:
<a:bind content="entrydisplay.activeEntryCaption" /> <html />
Eu quero fazer o seguinte:
<borderlayout>
<north title="use the above binding here">
this is north
</north>
</borderlayout>
Como alcanço a funcionalidade para que eu possa envolver essa ligação como o valor do título?
Obrigado, Sony
Solução
Para sua pergunta específica, anote seu componente como seguir:
<borderlayout>
<north id="mynorth" title="@{entrydisplay.activeEntryCaption}">
this is north
</north>
</borderlayout>
O Data Binder lerá essa anotação e chamará os métodos Getter e Setter para definir o título do componente norte para você. Isso vai fazer algo como:
mynorth.setTitle(entrydisplay.getActiveEntryCaption());
Outras dicas
Você está usando uma versão desatualizada da ligação de dados ZK. É altamente recomendável que você use a metodologia mais recente.
O link a seguir é a seção de banco de dados da ZK Essential Guide & Reference do desenvolvedor:
Nosso banco de dados básico consiste em um pojo que segue as convenções Java Bean sendo o acesso de uma interface baseada em XML usando anotações em atributos. Por exemplo:
Pessoa Pojo:
public class Person {
private String _firstName = "";
private String _lastName = "";
private Boolean _married = true;
public Person(){
}
public Person(String firstName, String lastName, Boolean married){
_firstName = firstName;
_lastName = lastName;
_married = married;
}
// getter and setters
public void setFullName(String f) {
// do nothing
}
public String getFullName() {
return _firstName + " " + _lastName;
}
//add more here
}
O arquivo da interface do usuário:
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
<window>
<zscript><![CDATA[
//prepare the person object
import bean.Person;
Person person = new Person();
person.setFirstName("Max");
person.setLastName("Planck");
]]>
</zscript>
<grid width="400px">
<rows>
<row> First Name: <textbox value="@{person.firstName}"/></row>
<row> Last Name: <textbox value="@{person.lastName}"/></row>
<row> Full Name: <label value="@{person.fullName}"/></row>
</rows>
</grid>
</window>
A teoria é descrita aqui.
Eu acho que a maneira antiga é feita assim
<borderlayout>
<north>
<attribute name="label">
<a:bind value="entrydisplay.activeEntryCaption" />
</attribute>
</north>
</borderlayout>
O novo Doc, o Doc de [http://docs.zkoss.org/wiki/data_binding].