当前位置: 首页 > 面试题库 >

在JSF中动态添加组件?

晋承嗣
2023-03-14
问题内容

在我的应用程序中,组件必须动态更改。我有一个数据表,其中我有两列,首先是<h:selectoneMenu>菜单中的a我有两个数据(数据分别为1和2),如果选择了1,<h:inputText>则应出现a,如果选择了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}" />

我的豆类

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;
}
}

问题答案:

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

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

动态添加/删除组件始终是麻烦的源头,而且您有可能以另一种简单得多的方式执行此操作。

在您的情况下,使用可见性using rendered属性就足够了。



 类似资料:
  • 问题内容: 如何在jpanel中动态添加组件?当我单击按钮时,我应该有添加按钮,组件应该添加到JPanel。 我的问题是,当我单击添加按钮时,将文本字段和按钮添加到jpanel时,用户可以根据需要将它们添加到jpanel中的任意次数单击添加按钮。我已将scrollerpane添加到我的jpanel,并且jpanel布局管理器设置为null。 问题答案: 像往常一样,除了必须调用: 完成后,因为容器

  • 问题内容: 我的目标是在页面/父组件上动态添加组件。 我从这样的一些基本示例模板开始: main.js: App.js: SampleComponent.js: 此处已安装到预写在模板中的节点上。但是,如果我需要向App组件中添加不确定数量的组件怎么办?显然,我不能将所有必需的 div都 坐在那里。 在阅读了一些教程之后,我仍然不了解如何动态创建组件并将其动态添加到父组件。有什么办法呢? 问题答案

  • 问题内容: 我知道我可以通过执行以下操作来向对象动态添加实例方法: 稍后我可以打电话给我,自我将被正确绑定,一切正常。 现在,我的问题是:如何做完全相同的事情来获得用@property装饰新方法的行为? 我猜是这样的: 但是,这样做会返回一个属性对象。 问题答案: 在描述对象需要住 类 , 未 在 实例中 ,有你想要的效果。如果您不想更改现有的类以避免更改其他实例的行为,则需要创建“每个实例的类”

  • 我正在尝试构建一个在JavaFX中实现群聊的聊天应用程序。我想在边框窗格内创建一个滚动窗格,该窗格将包含用户所属的所有组。当用户加入时,需要将组图标(ImageViews)动态添加(在场景生成器中无法完成)到滚动窗格(在HBox内)。 目前,我正在使用一个SceneController类,该类负责所有阶段和场景更改。 我已经创建了一个FXML文件(使用场景生成器),其中包含一个边框窗格和一个滚动窗

  • 我目前正在开发一个图像编辑器应用程序。我试图在我的应用程序中提供一个选项来处理不同的层,比如GIMP或Photoshop。我的方法是为用户添加的每个层添加一个。一切都很好,但不知怎么的,我动态添加的画布没有出现。 在我的类构造函数中,我添加了1个通用画布,它包含一个背景图像,不能编辑。这个画布(它是全球性的)确实显示出来并正常工作。所有可以编辑的层都存储在