我的应用程序我想为ex添加更多动态:我的应用程序要求输入城市并提供一个但是用户想要添加更多城市,我需要更动态地提供给他,那么如何在JSF中做到这一点?
答案 0 :(得分:2)
使用表格(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}"/>
在豆子里:
private List<String> cities = new LinkedList<String>();
//getter and setter
...
public String enlargeList () {
cities.add ("");
return "refreshTable"; //the easiest way - just reload the page
}
答案 1 :(得分:0)
如果是有限数量的城市,您可以使用呈现的属性隐藏字段,除非需要。
答案 2 :(得分:0)
您可以使用组件并将其与支持bean中的HtmlPanelGrid绑定。然后,您可以根据需要动态添加组件。这里我添加了outputText。
网页代码:
<ice:panelGrid binding="#{backingBean.gridComponent}"/>
支持Bean:
private HtmlPanelGrid gridComponent;
public void someFunction(){
HtmlOutputText outPutText = new HtmlOutputText();
outPutText.setValue("Some Text");
gridComponent.getChildren().add(outPutText);
}
// SETTERS / GETTERS