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

Nguyensontung

New Member
2/8/12
13
3
3
32
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

 

ForumModerator

enforcement Of Rules
18/4/11
157
10
18
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à.
 

Nancru

CongDongJava Project Leader
Staff member
9/10/11
1,640
307
83
Em đấy à, em nghĩ bài này sẽ improved nên move sẵn vào đây.
 

DongThuy

Member
1/9/12
44
1
8
28
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
 

haily

New Member
13/12/13
6
0
1
30
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
 

DongThuy

Member
1/9/12
44
1
8
28
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
 

thanht2pro

Member
13/9/11
92
12
8
ko dc ui banj oi,
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é.
 

Joe

Thành viên VIP
21/1/13
2,701
1,246
113
Thanh2pro
stop spoonfeeding! No codes = No fun = NO FAIR PLAY = NO HELP!
Or are you a foreteller who guesses what people wish to hear?
 

thanht2pro

Member
13/9/11
92
12
8
các bạn xem hộ mình nhé !

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

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package com;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.i:confused:utputStream;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.event.FileUploadEvent;

/**
*
* @author HAILY
*/
@ManagedBean
@SessionScoped
public class test {

/**
* Creates a new instance of test
*/
public test() {
}

public void handleFileUpload(FileUploadEvent event) {
try {
File targetFolder = new File("/images") ; // File("//images");
InputStream inputStream = event.getFile().getInputstream() ; // 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();
}
System.out.println("Successfully !!!");



}

}

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>
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?
 

haily

New Member
13/12/13
6
0
1
30
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>
 
Sửa lần cuối:

Joe

Thành viên VIP
21/1/13
2,701
1,246
113
buồn quá, không ai giup dc mih het
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?