Giới thiệu về JSF(JavaServer Faces)

Discussion in 'Bài viết hướng dẫn JSP' started by Nguyensontung, 26/12/12.

  1. Nguyensontung

    Nguyensontung New Member

    JSF là viết tắt của JavaServer Faces, một bản miêu tả kĩ thuật giúp đơn giản hóa việc phát triển giao diện cho các ứng dụng Web viết bằng Java bằng cách dùng các thành phần dùng lại được (reusable components).
    JSF là một bộ khung (framework) phát triển các ứng dụng Web viết bằng Java nhằm làm đơn giản hóa quá trình phát triển giao diện người dùng cho các ứng dụng J2EE. Để tạo ra giao diện hiển thị, JSF dùng dạng cấu trúc cây của các thẻ, mỗi thẻ là một thành phần giao diện (component) và FacesServlet servlet sẽ thực hiện công đoạn chuyển đổi ra giao diện tương ứng cho người dùng với định dạng HTML. Ngoài ra, JSF cũng có thể sử dụng các kĩ thuật hiển thị khác, như XUL. JSF bao gồm:
    1. Một tập các hàm API để biểu diễn các thành phần UI (giao diện người dùng) và quản lí thạng thái của chúng, xử lí các sự kiện và kiểm tra dữ liệu đầu vào, qui định việc di chuyển trang (page navigation), hỗ trợ tính đa ngôn ngữ và hỗ trợ cho người sử dụng (accessibility)
    2. Một số thành phần (component) có sẵn
    3. Hai thư viện chứa các thẻ tùy biến JSP (JavaServer Pages custom tag) để có thể biểu diễn một JavaServer Faces interface bên trong một trang JSP.
    4. Mô hình sự kiện ở phía máy chủ (server-side event model)
    5. Khả năng quản lí trạng thái
    6. Managed Beans (JavaBeans được tạo bằng dependency injection - xem thêm Spring framework)
      Example với CSDL thì các bạn tham khảo tại : Here
      Các bạn có thể tham khảo tại nguồn: http://vi.wikipedia.org/wiki/JSF

      Những ví dụ nằm ở đây

    tranhuyvc and nasural like this.
  2. ForumModerator

    ForumModerator enforcement Of Rules

    hả, mod nào approve bài này là bài viết hướng dẫn vậy, chỉ là kỹ năng search và copy paste thôi mà.
  3. Nancru

    Nancru CongDongJava Project Leader Staff Member

    Em đấy à, em nghĩ bài này sẽ improved nên move sẵn vào đây.
  4. gorkiit

    gorkiit Active Member

    Cái này là giới thiệu chứ đâu phải tut đâu
  5. DongThuy

    DongThuy Member

    mọi ng ai có project về jsf không cho mình xin demo với ngày mai phải hoàn thành rồi
  6. gorkiit

    gorkiit Active Member

    bạn liên hệ mail mình
    longlv.th@gmail.com
  7. DongThuy

    DongThuy Member

    cám ơn bạn nhé
  8. phuongvt_ltp

    phuongvt_ltp New Member

    jsf như là đuôi của adf nhỉ?
  9. haily

    haily New Member

    Chào các bạn, có bạn nào biết cách upload hình ảnh lên server bằng jsf với framework primefaces ko, hiện mih

    đang làm project với framework primefaces, mong các bạn giúp đở.:x

    Mình có tìm được một bài hướng dẫn, sao làm hoài nó ko có up file hinh lên server được #:-s.

    http://java.dzone.com/articles/how-upload-primefaces-32-under
  10. DongThuy

    DongThuy Member

    chào bạn mình đã làm và upload bình thường. bạn thủ tham khảo đoạn code này nhé.
    Code:
       <h:panelGrid id="pnl_images" columns="1" styleClass="row-fluid">
                                    <h:form enctype="multipart/form-data">
                                        <h:outputLabel value="#{PP_Images.label_title}"/>
                                        <p:fileUpload  label="#{PP_Images.label_choose}" cancelLabel="#{PP_Share.btn_cancel}" uploadLabel="#{PP_Images.label_upload}" fileUploadListener="#{ctl_Images.upload}" update=":form_main:table_Images :form_main:growl" multiple="true"
                                                       invalidFileMessage="#{PP_Images.validate_type}" invalidSizeMessage="#{PP_Images.validate_size}" required="true" requiredMessage="#{PP_Images.validate_url}" disabled="#{ctl_Images.isDISABLE}"
                                                       dragDropSupport="true" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" sizeLimit="1000000"  showButtons="true"/> 
                                    </h:form>
                                </h:panelGrid>
    ///Java Bean
    Code:
     public void upload(FileUploadEvent event) {
    
            try {
                if (isEDIT) {
                    deleteFile();
                }
                File file = new File(((ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext()).getRealPath("/resources/img/product/" + event.getFile().getFileName()));
                if (file.exists()) {
                    msg.getMsg(0, "upload because file existing " + event.getFile().getFileName());
                    return;
                }
                copyFile(event.getFile().getFileName(), event.getFile().getInputstream());
                mtmpImages.setSoucre((event.getFile().getFileName().toString()));
                this.setUrl((event.getFile().getFileName().toString()));
                msg.getMsg(1, "upload success " + event.getFile().getFileName());
    
                try {
                    handOK();
                } catch (Exception ex) {
                    Logger.getLogger(CTL_Images.class.getName()).log(Level.SEVERE, null, ex);
                }
                try {
                } catch (Exception ex) {
                    Logger.getLogger(CTL_Images.class.getName()).log(Level.SEVERE, null, ex);
                }
            } catch (IOException ex) {
                Logger.getLogger(CTL_Images.class.getName()).log(Level.SEVERE, null, ex);
    
            }
        }
    Web.xml
    Code:
        <filter>
            <filter-name>PrimeFaces FileUpload Filter</filter-name>
            <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
        </filter>
    Chúc bạn thành công
  11. haily

    haily New Member

    ko dc ui banj oi,
  12. thanht2pro

    thanht2pro Member

    Bạn dùng code này thử nhé:
    File xhtml:
    Code:
    <h:form enctype="multipart/form-data"> 
        <p:messages showDetail="true"/> 
        <p:fileUpload value="#{fileUploadController.file}" mode="simple"/> 
        <p:commandButton value="Submit" ajax="false" 
                    actionListener="#{fileUploadController.upload}"/> 
    </h:form>
    Code file function:
    Code:
    public class FileUploadController { 
        private UploadedFile file; 
        public UploadedFile getFile() { 
            return file; 
        } 
     
        public void setFile(UploadedFile file) { 
            this.file = file; 
        } 
     
        public void upload() { 
            if(file != null) { 
                FacesMessage msg = new FacesMessage("Succesful", file.getFileName() + " is uploaded."); 
                FacesContext.getCurrentInstance().addMessage(null, msg); 
            } 
        } 
    } 
    Nếu không được bạn có thể post code bạn lên cho mọi người cũng xem và giúp nhé.
  13. Joe

    Joe Moderator

    Thanh2pro
    stop spoonfeeding! No codes = No fun = NO FAIR PLAY = NO HELP!
    Or are you a foreteller who guesses what people wish to hear?
    [​IMG]
  14. thanht2pro

    thanht2pro Member

    Ok @Joe.
    Em sẽ rút kinh nghiệm lần sau :).
  15. thanht2pro

    thanht2pro Member

    Bạn để vào thẻ CODE đi bạn ơi.
    Chứ đọc vào đã rối mắt ko muốn đọc rùi thì ai đủ kiên nhẫn ngồi đọc code bạn lung tung thế mà giúp.
    Vấn đề của bạn gặp phải lỗi là gì thế?
    Chứ xem code bạn xong biết lỗi gì mà giúp hả bạn?
  16. haily

    haily New Member

    Ok, sorry các bạn !!!
    Vấn đề là mình code chạy nhưng không có upload hình lên thư mục trong cái project được !
    Không biết cái path có đúng ko nửa, mình tạo một folder "images" trong folder "web" trong project đó.

    HTML:
    1. index.htmlx
    <h:PanelGrid>
            <h:form enctype="multipart/form-data">
                    <p:fileUpload 
                    mode="advanced"
                    fileUploadListener="#{test.handleFileUpload}"
                    allowTypes="/(\.|\/)(gif|jpg|jpeg|gif|png|PNG|GIF|JPG|JPEG)$/"
                     auto="true"/>
               </h:form>
    </h:PanelGrid>
    
    
    2. test.java
    
    @ManagedBean
    @SessionScoped
    public class test {
    
    public test() {
    }
    
    public void handleFileUpload(FileUploadEvent event) {
       try {
               File targetFolder = new File("/images") ;
               InputStream inputStream = event.getFile().getInputstream() ;
               OutputStream out = new FileOutputStream(new File(targetFolder,
               event.getFile().getFileName()));
               int read = 0;
               byte[] bytes = new byte[1024];
    
               while ((read = inputStream.read(bytes)) != -1)
                {
                          out.write(bytes, 0, read);
               }
             inputStream.close();
            out.flush();
            out.close();
      }
       catch (IOException e)
       {
             e.printStackTrace();
       }
    }
    
    }
    
    
    3. web.xml
    
    
    <filter>
                 <filter-name>
                           PrimeFaces FileUpload Filter
                 </filter-name>
                <filter-class>
                           org.primefaces.webapp.filter.FileUploadFilter
                </filter-class>
    </filter>
    
    <filter-mapping>
                   <filter-name>
                            PrimeFaces FileUpload Filter
                    </filter-name>
                   <servlet-name>
                            Faces Servlet
                   </servlet-name>
    </filter-mapping>
    
    
  17. haily

    haily New Member

    buồn quá, không ai giup dc mih het
  18. Joe

    Joe Moderator

    This forum concerns mostly about JAVA and all related Java stuffs (Androids, SourceForge, Apache, etc.) And if a member uses a 3rd party product that's very uncommon then he/she can't expect any answer. Your "complaint" is quite odd and inappropriate. Why don't you address your problem directly to PRIMESFACE and ask for support?
  19. haily

    haily New Member

    thanks, co the sao
  20. Đinh Quang Khang

    Đinh Quang Khang New Member

  21. thanht2pro

    thanht2pro Member

    Code trên của bạn thì không sai gì cả. Nhưng tớ nghỉ là projects của bạn thiếu mấy thư viện cần thiết để nó có thể chạy dc. Bạn kiểm tra xem có 2 gói này chưa nhé commons-fileuploadcommons-io nếu chưa có thì add vào rồi chạy xem nhé.

Chia sẻ trang này