{{1}}
但条件不起作用,如何解决?
答案 0 :(得分:1)
您可能想要的是一个HtmlMacroComponent,它结合了标签和文本框......
你从一个zul文件开始:
<zk>
<label id="mcLabel"/><textbox id="mcTextbox"/>
</zk>
...并为它创建一个组件......
public class MyTextbox extends HtmlMacroComponent {
@Wire("#mcTextbox")
private Textbox textbox;
@Wire("#mcLabel")
private Label label;
private String caption;
private boolean mandatory;
public MyTextbox() {
compose(); // this wires the whole thing
}
public void setMandatory(final boolean value) {
mandatory = value;
updateCaption();
}
public boolean isMandatory() {
return mandatory;
}
public void setCaption(final String value) {
caption = value;
updateCaption();
}
public String getCaption() {
return caption;
}
protected void updateCaption() {
label.setValue(mandatory ? caption + "*" : caption);
}
public String getValue() {
return textbox.getValue();
}
public void setValue(final String value) {
textbox.setValue(value);
}
}
...现在您可以使用它,例如在zul文件的顶部定义它...(根据需要调整包和.zul名称):
<?component name="mytextbox" macroURI="/zk/textbox.zul" class="com.example.MyTextbox"?>
...所以你可以简单地使用它......
<mytextbox id="name" value="Frank N. Furter" caption="Your name" mandatory="true"/>
稍后你可以为它定义语言插件......
我的语言,插件 XUL / HTML mytextbox com.example.MyTextbox /zk/textbox.zul
...因此您不需要将定义放在您使用它的每个.zul文件的顶部。有关详情,请参阅documentation。
当然,你也只能创建一个新标签等,但我发现很好的想法是为那些组合各种组件的作业创建MacroComponents,因为这样,例如,你也可以自动添加验证等。