如何在JSF中动态添加 ?] >> 我的应用程序要动态添加例如:我的应用程序要求输入城市并提供一个城市,但是用户想要添加更多城市,我需要更动态地提供他,所以如何在JSF中做到这一点?] > 我是我的应用程序,我想为动态添加更多,例如:我的应用程序要求输入城市并提供一个城市,但是用户想要添加更多城市,我需要更动态地提供他,所以如何... 使用表格(h:dataTable)。 一般思路:您有一个字符串列表(每个字符串代表城市名称)。开始时列表中只有1个项目-1个空字符串。 [如果要添加一个城市,则可以执行一些操作(例如,按“添加更多城市”按钮),并且此操作将一个空字符串添加到列表中,并且应重新呈现表格(通过Ajax或整个页面)重新加载)。 之后,您将在页面上获得2个输入字段,每个输入字段都绑定到其自己的字符串值。然后,用户输入城市名称,按“处理”按钮,它会调用一些操作,您可以在其中处理已包含2个[[非空 字符串)的列表。<h:dataTable value="#{dataTableBean.cities}" var="city"> <h:column> <f:facet name="header" > <h:outputText value="City name"/> </f:facet> <h:inputText value="#{city}"/> </h:column> </h:dataTable> <h:commandButton value="Add one more city" action="#{dataTableBean.enlargeList}"/> <h:commandButton value="Submit" action="#{dataTableBean.processList}"/> 在bean中: private List<String> cities = new LinkedList<String>(); //getter and setter ... public String enlargeList () { cities.add (""); return "refreshTable"; //the easiest way - just reload the page } 如果城市数量有限,除非需要,您可以使用rendered属性隐藏字段。 您可以使用component并将其与HtmlPanelGrid绑定在后备bean中。然后,您可以根据需要动态添加组件。在这里,我添加了outputText。 页面代码: <ice:panelGrid binding="#{backingBean.gridComponent}"/> Backing Bean: private HtmlPanelGrid gridComponent; public void someFunction(){ HtmlOutputText outPutText = new HtmlOutputText(); outPutText.setValue("Some Text"); gridComponent.getChildren().add(outPutText); } // SETTERS / GETTERS 我喜欢Nayan Wadekar的解决方案! 我做了同样的事情,只是我想知道如何获取我添加到此面板中的InputText的值!?我可以找到UIComponent,但是SubmittedValue / Value为null ..我该如何改变呢? 问候西蒙

问题描述 投票:1回答:4

我的应用程序要动态添加例如:我的应用程序要求输入城市并提供一个城市,但是用户想要添加更多城市,我需要更动态地提供他,所以如何在JSF中做到这一点?] >

我是我的应用程序,我想为动态添加更多,例如:我的应用程序要求输入城市并提供一个城市,但是用户想要添加更多城市,我需要更动态地提供他,所以如何...

使用表格(h:dataTable)。

一般思路:您有一个字符串列表(每个字符串代表城市名称)。开始时列表中只有1个项目-1个空字符串。

[如果要添加一个城市,则可以执行一些操作(例如,按“添加更多城市”按钮),并且此操作将一个空字符串添加到列表中,并且应重新呈现表格(通过Ajax或整个页面)重新加载)。

之后,您将在页面上获得2个输入字段,每个输入字段都绑定到其自己的字符串值。然后,用户输入城市名称,按“处理”按钮,它会调用一些操作,您可以在其中处理已包含2个[[非空

字符串)的列表。<h:dataTable value="#{dataTableBean.cities}" var="city"> <h:column> <f:facet name="header" > <h:outputText value="City name"/> </f:facet> <h:inputText value="#{city}"/> </h:column> </h:dataTable> <h:commandButton value="Add one more city" action="#{dataTableBean.enlargeList}"/> <h:commandButton value="Submit" action="#{dataTableBean.processList}"/>
在bean中:

private List<String> cities = new LinkedList<String>(); //getter and setter ... public String enlargeList () { cities.add (""); return "refreshTable"; //the easiest way - just reload the page }

如果城市数量有限,除非需要,您可以使用rendered属性隐藏字段。

您可以使用component并将其与HtmlPanelGrid绑定在后备bean中。然后,您可以根据需要动态添加组件。在这里,我添加了outputText。

页面代码:

<ice:panelGrid binding="#{backingBean.gridComponent}"/>

Backing Bean:

private HtmlPanelGrid gridComponent; public void someFunction(){ HtmlOutputText outPutText = new HtmlOutputText(); outPutText.setValue("Some Text"); gridComponent.getChildren().add(outPutText);

}

// SETTERS / GETTERS

我喜欢Nayan Wadekar的解决方案!

我做了同样的事情,只是我想知道如何获取我添加到此面板中的InputText的值!?我可以找到UIComponent,但是SubmittedValue / Value为null ..我该如何改变呢?

问候西蒙

java jsf
4个回答
2
投票

使用表格(h:dataTable)。


0
投票
如果城市数量有限,除非需要,您可以使用rendered属性隐藏字段。

0
投票
您可以使用component并将其与HtmlPanelGrid绑定在后备bean中。然后,您可以根据需要动态添加组件。在这里,我添加了outputText。

页面代码:


0
投票
我喜欢Nayan Wadekar的解决方案!

我做了同样的事情,只是我想知道如何获取我添加到此面板中的InputText的值!?我可以找到UIComponent,但是SubmittedValue / Value为null ..我该如何改变呢?

© www.soinside.com 2019 - 2024. All rights reserved.