2012-07-12 36 views
8

Tôi khá mới đối với JSF và PrimeFaces và có một vài vấn đề trong việc phát triển bố cục trang đầy đủ với nhiều menu.Cập nhật trang động trong bố cục các bố cục lồng nhau

Issue # 1

Chúng tôi có một bố cục trang đầy đủ bằng PrimeFaces 3.3 với các đơn vị bố trí lồng nhau ở phía bên trái như sau:

<p:layoutUnit id="west" position="west" header="Services" resizable="true" closable="true" collapsible="true" effect="drop"> 
      <p:layout>           
       <p:layoutUnit id="inner_center" position="center">       
        <h:form id="formMainMenu"> 
         <ui:include src="#{menuBean.pageToDisplay}.xhtml" /> 
        </h:form>    
       </p:layoutUnit> 
       <p:layoutUnit id="inner_south" size="200" position="south">          
        <h:form id="formStartMenu"> 
         <p:menu> 
          <p:submenu label="Start Menu">          
           <p:menuitem value="Start" actionListener="#{#menuBean.setPageToDisplay('template/menu/start')}" update=":inner_center" />          
          </p:submenu> 
         </p:menu> 
        </h:form> 
       </p:layoutUnit> 
      </p:layout> 
     </p:layoutUnit> 

Đây là đậu ủng hộ:

@ManagedBean(name = "menuBean") 
@SessionScoped 
public class menuBean implements Serializable { 

private String pageToDisplay = "template/menu/main"; 

public String getPageToDisplay() { 
    return this.pageToDisplay; 
} 

public void setPageToDisplay(String pageToDisplay) { 
    this.pageToDisplay = pageToDisplay; 
} } 

Khi tôi nhấp vào menuItem, toàn bộ LayoutUnit (inner_c enter) biến mất. Tôi đã thử nhiều kết hợp các biểu mẫu và các điều khiển Panel cùng với Ajax và không thể tải trang và menu thứ hai. Có lẽ cách tiếp cận của tôi là không chính xác do kiến ​​thức hạn chế của tôi trong JSF. Tôi hy vọng điều này đơn giản và tôi chỉ thiếu nó.

Từ trình đơn Hành động của tác vụ, tôi muốn tải một bean menu PrimeFaces khác trong đơn vị bố trí inner_center .. có lẽ tôi không cần thực hiện điều này và chỉ cần gọi trình đơn qua Ajax?

ISSUE # 2 Với bố cục lồng nhau này, khi trang tải, tiêu đề LayoutUnit gốc "Dịch vụ" biến mất hoàn toàn.

<p:layoutUnit id="west" position="west" header="Services" resizable="true" closable="true" collapsible="true" effect="drop"> 

Bất kỳ trợ giúp hoặc lời khuyên nào về cách tiếp cận tổng thể được đánh giá cao !!

Cảm ơn!

+0

Một số thông tin môi trường: Mojara 2.1, Primefaces 3.3, NetBeans IDE 7.0.1 + Glassfish –

+0

Tôi không thể chắc chắn, nhưng sự cố này có thể xảy ra nếu các trang được chèn có thành phần biểu mẫu. Các biểu mẫu lồng nhau sẽ gây ra vấn đề. –

+0

Cảm ơn. Bạn là chính xác .. nó được khuyến khích rằng các hình thức được đặt bên trong các điều khiển layoutUnit, mà tôi đã làm ... cũng đảm bảo không có thẻ biểu mẫu có mặt trong các trang được tải. Tôi sẽ thử lại bằng cách sử dụng '' và PanelGroup. Có thể một tham chiếu bị tắt. LÝ DO, tôi muốn bỏ qua tải một trang và đặt một menu trực tiếp trong layoutUnit và điền nó một cách động bằng cách chuyển một giá trị. '' ..không chắc chắn cách tốt nhất. –

Trả lời

2

Câu hỏi này có vẻ là phổ biến, vì vậy tôi cảm thấy bắt buộc phải có ít nhất chia sẻ các giải pháp chúng tôi đã đưa ra để xử lý thiết kế ứng dụng tổng thể dựa trên nhiều khác Stack Overflow Q & Một, thử nghiệm của riêng tôi, tiêu chuẩn JSF, BalusC, và vô số người và blog khác đã đóng góp vào đường cong học tập.

BỐI CẢNH -

ứng dụng của chúng tôi là một giải pháp quản lý dịch vụ cấp doanh nghiệp mà tàu với một giao diện người dùng và bất kỳ số lượng các module được cấp phép. Chúng tôi đã xem xét OSGI và các khung ứng dụng nặng khác, nhưng đã quyết định một dự án Enterprise Maven có quản lý gọn nhẹ .jar thông qua các tệp cấu hình và các thiết lập cơ sở dữ liệu. Chúng tôi sử dụng các đối tượng thực thể được hỗ trợ bởi mySQL, chỉ chuyển các đối tượng trở lại giao diện người dùng.

SOLUTION -

Đối với phát hành ban đầu của chúng tôi, chúng tôi đã tạo ra một trang web mẫu JSF dựa trên cách bố trí này: http://www.mkyong.com/jsf2/jsf-2-templating-with-facelets-example/

Ý tưởng là để có giao diện người dùng hoàn toàn năng động như sau:

  1. Thiết kế ứng dụng lõi JSF

    • dữ liệu-driven ứng dụng JavaEE Enterprise Maven
    • Chủ yếu là xử lý trang đơn thông qua Ajax
    • an PhaseListener (giúp với các vấn đề toàn cầu Ajax)
    • Lỗi Xử lý Phaselistener (giúp với các vấn đề toàn cầu Ajax)
  2. Bảo mật

    • Chúng tôi đang sử dụng bảo mật dựa trên thực tại trên Glassfish. Với JSF 2.2, bạn có thể dễ dàng chú thích các thư mục, điều khiển, trang, phương thức để quản lý vai trò chi tiết.
  3. Navigation

    • động xây dựng từ cấu hình XML dựa trên người dùng vai trò trong Realm.

    • Điều hướng động và biểu mẫu đều được quản lý thông qua đậu được sắp xếp khi cần. Liên kết này có chứa rất nhiều câu trả lời tốt các vấn đề REAL bạn sẽ gặp phải: http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html

  4. Template nội dung và điều khiển

    • Nội dung được phân phối thông qua đối tượng được phổ biến bởi các thực thể. Phần lớn tất cả dữ liệu đến từ cơ sở dữ liệu. Chỉ khởi tạo ứng dụng cơ sở được thực hiện thông qua một tệp cấu hình cục bộ.

    • Tạo điều khiển được thực hiện thông qua tệp thuộc tính xml cho bất kỳ dữ liệu đối tượng nào cần quản lý qua giao diện người dùng.

Như bạn đã biết, lỗ thỏ có nhiều đường hầm. Nếu có bất kỳ phần nào trong thiết kế ứng dụng của chúng tôi giống với bạn và bạn muốn có thêm thông tin và/hoặc mẫu mã, vui lòng hỏi và tôi sẽ đăng trên chủ đề này để người khác tiếp tục học.

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