I'm trying to extend the functionality of a web application written in Jelly & Java.
Scenario: The app has 2 default, hardcoded labels: label1 & label2
Under index.jelly we have
<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>
As you can see, the labels themselves and the values are hardcoded.
In the Java class, each label has its own assigned variable:
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;
}
Keep in mind that the values are persisted through reflection (label1 field from index.jelly is matched with the databoundsetter in the .java file).
Supposing I want to add an indefinite number of labels, how can I persist them since I can't create a setter for each of them since I won't know how many I have?
An immutable Object with state and behavior:
class Label {
private final Integer label;
Label(Integer label) {
this.label = label;
}
public Label differentLabel(Integer label){
return new Label(label);
}
}
Then you can create multiple labels