gpt4 book ai didi

jsf - 在 JSF 2.0 中动态创建输入字段并将其链接到支持 bean

转载 作者:行者123 更新时间:2023-12-04 15:12:11 25 4
gpt4 key购买 nike

我的要求是这样的。在 JSF(2.0) 页面中,我有一个名为 Address 的部分。我添加了一个按钮,上面写着“添加地址”。当用户单击按钮时,应动态生成新的地址字段(输入文本)(Line1、Line2、City 等)。当我单击提交时,所有值(地址 1、地址 2 ... 地址 N)都应该进入一个数组列表。

所以我需要

  • 点击按钮动态生成 UI 组件
  • 将这些 UI 组件链接到支持 bean(最好是列表)
  • 数据表不应该 用于上述

  • 很难在网上找到合适的 JSF 文档,所以如果有人可以帮助我,那就太好了

    更新:noone 发布的答案效果很好,但我想要更健壮的东西,比如从 Java Controller 创建动态 UI 组件(Java bean,使用 HtmlPanelGrid 组件)。我已经能够使用 htmlPanelGrid 动态创建组件,但是我找不到将这些生成的组件绑定(bind)到 bean 中的地址列表的方法(存储所有地址详细信息的那个)

    最佳答案

    我假设你有一个类(class) Address地址。还有一个 AddressBeanList保留地址。

    代码可能看起来像这样(对于我能想到的最基本的场景):

    <h:form id="addressForm">
    <h:commandButton value="Add Address" action="#{addressBean.addAddress()}" immediate="true" execute="@this">
    <f:ajax render="addressForm" />
    </h:commandButton>
    <c:forEach items="#{addressBean.addressList}" var="address">
    <h:inputText value="#{address.street}" /><br />
    </c:forEach>
    <h:commandButton value="Save" action="#{addressBean.persistAddresses}" />
    </h:form>
    @ManagedBean
    @ViewScoped
    public class AddressBean {
    private List<Address> addressList = new ArrayList<Address>(); // getter+setter

    public void addAddress() {
    addressList.add(new Address());
    }

    public void persistAddresses() {
    // store the addressList filled with addresses
    }
    }
    public class Address {
    private String address; // getter+setter
    }
    <c:forEach>取自 JSTL。它可能适用于 <ui:repeat> ,但根据您的实际情况可能不会。

    关于jsf - 在 JSF 2.0 中动态创建输入字段并将其链接到支持 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18628169/

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