2013-09-05 25 views
6

Yêu cầu của tôi là một cái gì đó như thế này. Trong trang JSF (2.0), tôi có một phần được gọi là Địa chỉ. Tôi đã thêm một nút có nội dung "Thêm địa chỉ". Khi người dùng nhấp vào nút, các trường địa chỉ mới (văn bản đầu vào) sẽ được tạo động (Line1, Line2, City v..v ..). Và khi tôi nhấp vào gửi, tất cả các giá trị (Địa chỉ 1, Địa chỉ 2 ... Địa chỉ N) phải đi đến một danh sách mảng.Tạo các trường nhập động động trong JSF 2.0 và liên kết nó với một bean sao lưu

Vì vậy, tôi cần phải

  1. động tạo ra các thành phần UI trên nhấp chuột vào một nút
  2. liên kết những thành phần giao diện người dùng để một bean hậu thuẫn (Tốt nhất vào một danh sách)
  3. bảng dữ liệu không nên được được sử dụng cho các bên trên

Rất khó để tìm tài liệu JSF thích hợp trực tuyến, vì vậy nếu có ai có thể giúp tôi, sẽ rất tuyệt

Cập nhật: Câu trả lời được đăng bởi noone hoạt động tốt, nhưng tôi muốn thứ gì đó mạnh mẽ hơn, như tạo thành phần UI động từ Bộ điều khiển Java (Bean java, sử dụng thành phần HtmlPanelGrid). Tôi đã có thể tạo ra các thành phần tự động bằng cách sử dụng htmlPanelGrid, nhưng tôi không thể tìm cách để ràng buộc các thành phần được tạo ra đó vào danh sách địa chỉ trong bean (một trong đó lưu trữ chi tiết của tất cả các địa chỉ)

+0

Câu hỏi này quá rộng. Trước tiên, bạn nên thử một cái gì đó của chính mình và sau đó yêu cầu nếu bạn có một số vấn đề. Nhân tiện, bạn có hàng tá hướng dẫn trực tuyến JSF và cách thực hiện, bắt đầu từ trang này. –

+0

Tôi đã thử nhiều thứ, lý do tôi chưa đặt nó ở đây vì tôi muốn thấy các cách tiếp cận khác nhau bởi những người khác nhau –

+0

Tôi đã cập nhật câu hỏi, vui lòng xem –

Trả lời

5

Tôi giả sử rằng bạn có một lớp Address cho địa chỉ. Và AddressBean với số List để giữ địa chỉ.

Mã này có thể trông như thế này (đối với kịch bản cơ bản nhất mà tôi có thể nghĩ đến):

<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> được lấy từ JSTL. Nó có thể làm việc với <ui:repeat>, nhưng tùy thuộc vào kịch bản thực tế của bạn có thể không.

+0

Tôi đã cập nhật câu hỏi, vui lòng xem –

+0

Là một 'ràng buộc' để quản lý thành phần của bạn trên ManagedBean của bạn những gì bạn đang tìm kiếm? – noone

+0

Yea, tôi có thể tạo ra các thành phần thông qua Bean quản lý (Sử dụng ràng buộc panelgrid, nhưng làm cách nào để ràng buộc các giá trị?) –

Các vấn đề liên quan