views:

30

answers:

1

I have a panel in my Page1.jsp:

<webuijsf:panelLayout binding="#{Page1.dynamicFieldsPanel}"
    id="dynamicFieldsPanel" -rave-layout: grid"/>

Then I have this in Page1.java:

private PanelLayout dynamicFieldsPanel = new PanelLayout();

public void setDynamicFieldsPanel(PanelLayout pl)
{
    this.dynamicFieldsPanel = pl;
}

public PanelLayout getDynamicFieldsPanel()
{
    TextField textField = new TextField();
    this.dynamicFieldsPanel.getChildren().add(textField);

    return dynamicFieldsPanel;
}

How do I bind my dynamic TextField to something so I can retrieve the value entered by the user?

A: 

You need to create a value binding which binds the component's value with some bean property. Since you're using the (over 3 years dead and abandoned) Woodstock library I bet that you're still on the legacy JSF 1.1, so here's a JSF 1.1 targeted example:

FacesContext context = FacesContext.getCurrentInstance();
ValueBinding value = context.getApplication().createValueBinding("#{bean.property}");
someComponent.setValueBinding("value", value);

The #{bean.property} should of course point to a valid and existing property in the managed bean #{bean}. If the amount or names are unpredictable beforehand, then you may consider to use a Map property for this.

BalusC
I will try that, thanks.