我正在尝试扩展用Jelly和Java编写的Web应用程序的功能。
场景:该应用具有2个默认的硬编码标签: label1 和 label2
在index.jelly下,我们有
<f:entry title="${%Label1}"
field="label1">
<f:textbox name="label1"
value="${it.label1}"
default=""/>
</f:entry>
<f:entry title="${%label2}"
field="label2">
<f:textbox name="label2"
value="${it.label2}"
default=""/>
</f:entry>
如您所见,标签本身和值都是硬编码的。
在Java类中,每个标签都有其自己的分配变量:
private Integer label1;
private Integer label2;
public Integer getlabel1() {
return label1;
}
@DataBoundSetter
public void setlabel1(Integer label1) {
this.label1= label1;
}
public Integer getlabel2() {
return label2;
}
@DataBoundSetter
public void setlabel2(Integer label2) {
this.label2= label2;
}
请记住,值是通过反射保留的(index.jelly中的label1字段与.java文件中的databoundsetter匹配)。
假设我要添加无限数量的标签,由于我不知道有多少标签,因此无法为每个标签创建设置器,该如何保存标签?
答案 0 :(得分:0)
具有状态和行为的不可变对象:
class Label {
private final Integer label;
Label(Integer label) {
this.label = label;
}
public Label differentLabel(Integer label){
return new Label(label);
}
}
然后您可以创建多个标签