2009-08-03 25 views
6

Có điều gì đó tương tự như giàn giáo của Ruby on Rails để tạo GWT CRUD không?GWT Giàn giáo

Trả lời

0

GWT không phải là một ngăn xếp ứng dụng đầy đủ như Rails, vì vậy bạn có thể không tìm thấy giải pháp tích hợp và ra khỏi hộp như Rails. GWT chủ yếu là một lớp xem - bạn vẫn cần một lớp kiên trì.

+0

Tôi hiểu điều đó, nhưng nó sẽ là ok cho tôi có nó đi kèm với một khuôn khổ cho lớp kiên trì. – Otavio

3

Spring Roo đã được công bố tại Google I/O 2010. Đó có thể là những gì bạn đang tìm kiếm.

+0

+1, Spring Roo có lẽ là những gì bạn đang tìm kiếm. Nó thậm chí còn được đề cập trong [GWT site] (http://code.google.com/webtoolkit/doc/latest/ReleaseNotes.html#MvpFramework). Tuy nhiên, nó yêu cầu GWT 2.1 hoạt động. – Piotr

+0

[Ở đây] (http://www.youtube.com/watch?v=GQHlhIIxCIc) bạn có thể tìm thấy bản trình bày Google I/O về tích hợp Spring Roo và GWT. – Piotr

0

GWT sử dụng một mô hình khác so với tất cả các khung CRUD sách giáo khoa giải quyết rất ít IMO. Hãy nghĩ về nó như một Swing cũ tốt. Giao tiếp đã được tích hợp sẵn (GWT-RPC). Cách duy nhất để cải thiện nó - không có khung CRUD nào cung cấp - sẽ tạo ra một số mẫu (bộ tiện ích phong phú hơn của bạn, v.v.) hoạt động trên một số dữ liệu thống nhất. Và tất nhiên mã phù hợp trên máy chủ. Bằng cách này bạn có thể sử dụng các phương thức GWT-RPC chung và các cấu trúc dữ liệu chung để truyền dữ liệu, chứ không phải hàng triệu phương thức trong tất cả các giao diện đó. Nếu không thì GWT-RPC là tốt, như bất kỳ khung công tác CRUD chung chung nào mà có hàng triệu phương thức đó trong "mặt tiền dịch vụ".

Một điều bạn có thể làm là "tích hợp" GWT-RPC với Spring MVC. Chỉ có vài dòng mã - và bạn có thể triển khai các dịch vụ GWT-RPC của bạn như là Spring @Controllers chuẩn. Họ sẽ có quyền truy cập vào tất cả các thành phần tự động, v.v. Bạn cần thêm gì? Bạn có thể truy cập hoàn toàn bất cứ điều gì thông qua mùa xuân.

Vì vậy, dưới đây là cách bạn làm điều đó:

public abstract class GwtRpcController extends RemoteServiceServlet implements Controller, ServletConfigAware { 
private static Log log = LogFactory.getLog(GwtRpcController.class); 

private ServletConfig servletConfig; 

@Override 
public ServletConfig getServletConfig() { 
    return servletConfig; 
} 

@Override 
public void setServletConfig(ServletConfig servletConfig) { 
    try { 
     this.init(servletConfig); 
    } catch (ServletException e) { 
     throw new RuntimeException(e); 
    } 
    this.servletConfig = servletConfig; 
} 

@Override 
protected void onAfterRequestDeserialized(RPCRequest rpcRequest) { 
    super.onAfterRequestDeserialized(rpcRequest);  
} 

@Override 
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { 
    super.doPost(request, response); 
    return null; 
} 

@Override 
protected void doUnexpectedFailure(Throwable e) { 
    log.error(e.getMessage(), e); 
} 

}

Và dịch vụ GWT-RPC của bạn:

@RemoteServiceRelativePath("gwtrpc/xxx") 
public interface XxxService extends RemoteService { 
... 
} 

@Controller 
@RequestMapping(value = "xxx") 
public class XxxServiceImpl extends GwtRpcController implements XxxService { 
... 
} 

Hãy chắc chắn rằng "gwtrpc/*" được ánh xạ tới SpringDispatcher servlet trong web.xml. Thông thường, bạn sẽ ánh xạ mọi thứ ("/") vào nó và tạo ngoại lệ cho các tài nguyên không phải Spring như CSS, v.v. để bạn không cần phải làm gì một cách rõ ràng.

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