gpt4 book ai didi

java - 在JSF中动态添加组件?

转载 作者:行者123 更新时间:2023-12-01 07:42:28 24 4
gpt4 key购买 nike

在我的应用程序中,组件必须动态更改。我有一个数据表,其中有两列,第一列是 <h:selectoneMenu>在菜单中我有两个数据(数据是1和2)如果选择1则<h:inputText>应该出现,如果选择 2 <h:selectoneMenu>应该出现。需要帮助来做到这一点吗?

我的 JSF

   <h:selectOneMenu id="menu" value="#{sample.data}" rendered="true" valueChangeListener="#{sample.change}">
<f:selectItem itemLabel="Data" itemValue=""/>
<f:selectItems value="#{sample.list1}"/>
<a4j:support event="onchange" reRender="text" />
</h:selectOneMenu>
<h:inputText id="text" value="#{sample.input}" rendered="#{sample.status}" />

我的芒果 bean 类

public class Sample {
private Boolean status; //Getter & Setter
private List<SelectItem> list1; //Setter
private String input; //Getter & Setter
private String data; //Getter & Setter

public void change(ValueChangeEvent event){
System.out.println((String)event.getNewValue());
if(((String)event.getNewValue()).equals("value1")){
status=true;
}
else if(((String)event.getNewValue()).equals("value2")){
status=false;
}
}
public Boolean getStatus(){
if(status==null){
status=true;
}
return status;
}
public List<SelectItem> getList1() {
if(list1==null) {
list1 = new ArrayList<SelectItem>();
list1.add(new SelectItem("value1", "label1"));
list1.add(new SelectItem("value2", "label2"));
}
return list1;
}
}

最佳答案

我的建议是:不要动态添加/删除组件。另一种方式解决您的问题:

  • 切换组件的可见性
  • 重新绑定(bind)属于组件的数据

动态添加/删除组件始终是麻烦的根源,并且您可能可以通过另一种更简单的方式来做到这一点。

就您而言,使用 rendered 属性来处理可见性应该就足够了。

关于java - 在JSF中动态添加组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2295856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com