2014-12-16 16 views
7

Tôi đã phát triển các thành phần tổng hợp bằng cách sử dụng JSF 2.0 trong Eclipse. Tôi đã đặt các tệp thẻ XHTML của mình trong thư mục resources.Các thuộc tính của các thẻ mới sử dụng thành phần tổng hợp không được hiển thị bởi mã rút gọn hoàn toàn tự động Eclipse

Khi tôi nhấn ctrl + không gian trong bàn phím, thuộc tính của thẻ không được hiển thị.

Tôi tìm thấy một số mẹo được thông báo để cài đặt "công cụ Jboss" nhưng không hoạt động.

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:cc="http://xmlns.jcp.org/jsf/composite" 
     xmlns:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:f="http://xmlns.jcp.org/jsf/core" 
     xmlns:p="http://primefaces.org/ui"> 

    <cc:interface> 
     <cc:attribute name="value"/> 
     <cc:attribute name="label"/> 
     <cc:attribute name="masculino" default="true"/> 
    </cc:interface> 

    <cc:implementation> 
     <p:selectOneMenu value="#{cc.attrs.value}" label="#{cc.attrs.label}"> 
      <f:selectItem itemValue="#{null}" 
          itemLabel="#{cc.attrs.masculino ? lbl['LABEL.TODOS'] : lbl['LABEL.TODAS']}" /> 
      <f:selectItem itemValue="true" itemLabel="#{lbl['LABEL.SIM']}" /> 
      <f:selectItem itemValue="false" itemLabel="#{lbl['LABEL.NAO']}" /> 
     </p:selectOneMenu>         
    </cc:implementation> 

</html> 

Trên đây là một ví dụ về một thẻ được tạo.

Cảm ơn

+0

Bạn đã giải quyết được sự cố này chưa? – Ced

+0

Không, tôi vẫn đang chờ giải pháp – user3503888

+0

@ user3503888 thử cập nhật nhật thực của bạn –

Trả lời

1

Tôi đang sử dụng Eclipse Mars với gói Java EE, Hibernate và Spring công cụ IDE và tôi chỉ cần kiểm tra nó hoạt động ra khỏi hộp.

Đảm bảo thành phần của bạn dưới webapp/resources/YOUR_COMP_NAME.

Bỏ qua này, xem phiên bản dưới đây: xét namespace tiêu đề của bạn cho composite, trong mã mẫu của bạn, bạn có

xmlns:cc="http://xmlns.jcp.org/jsf/composite" 

nhưng trong mã của tôi, tôi có

xmlns:composite="http://java.sun.com/jsf/composite" 

Nó không quan tâm cho dù bạn sử dụng cc pr composite pr efix, nhưng như bạn có thể thấy, URL khác nhau. Xem this document

Cuối cùng, khi bạn sử dụng hỗn hợp này vào bất kỳ trang xhtml, bao gồm nó như sau:

xmlns:prefix="http://java.sun.com/jsf/composite/YOUR_COMP_NAME" 

Bằng cách này, khi bạn viết trong nhật thực <prefix: và nhấn ctrl + gian nó sẽ hiển thị cho bạn danh sách các thành phần bạn có.

Sửa

Tôi vừa nhận ra rằng http://xmlns.jcp.org/jsf/composite là URL mới trong thay thế http://java.sun.com/jsf/composite, vì vậy tôi đã thay đổi nó trong mã của tôi và nó đã hoạt động.

3

hỗ trợ JSF 2.x Facelets được tích hợp trong "Eclipse IDE for Java EE developers" (chú ý EE, do đó không phải là "Eclipse IDE cho các nhà phát triển Java"), kể từ Eclipse Helios (phiên bản 3.6, phát hành tháng 6 năm 2010). Bạn cần đảm bảo rằng mặt đối tượng JavaServer Mặt nạ được bật trong mục Mục dự án thuộc tính của dự án và được đặt ở mức tối thiểu là phiên bản 2.0.

enter image description here

này thường configureable trong in new động dự án Web hướng dẫn, nhưng khi nhập khẩu các dự án phi Eclipse hoặc tạo phi Dynamic Web Project dự án (ví dụ Maven nguyên mẫu), sau đó bạn cần phải tự kiểm tra/thêm nó.

Sau khi tích hợp, tự động điền thẻ JSF theo mặc định có sẵn trên java.sun.com không gian tên XML.

enter image description here

mới xmlns.jcp.org namespace không được công nhận theo mặc định (hiện thử nghiệm phiên bản Eclipse là Luna SR2).

enter image description here

Các xmlns.jcp.org namespace mới sẽ chỉ làm việc nếu bạn đã thêm một vật lý JSF 2.2 thực hiện để xây dựng đường dẫn trong hương vị của một chính thức chứa Java EE đầy đủ có JSF 2.2 trong module tương ứng, tích hợp thông qua một máy chủ phong nha plugin và đặt là Thời gian chạy được nhắm mục tiêu trong thuộc tính của dự án hoặc tệp JAR JSF 2.2 thực thi cụ thể trong trường hợp của Tomcat và nhái (hoặc bằng cách thêm nó làm phụ thuộc Maven).

enter image description here

Nó chỉ vẫn không công nhận composit trong không gian tên XML mới. Khi đổi lại thành java.sun.com, hoàn tất mã của thẻ thành phần tổng hợp đã trở lại, nhưng hoàn thành mã thuộc tính trên các thẻ đó không khả dụng.

enter image description here

Sau đó, tôi cài đặt JBoss Tools 4.2.3 for Eclipse Luna và kích hoạt các JBoss Công cụ Kiến thức cơ sở trong thuộc tính của dự án.

enter image description here

Sau khi đóng và mở lại Facelet (để biên tập JBoss BUILTIN HTML được mở, bạn có thể thiết lập/cấu hình trình biên tập được sử dụng bởi rightclick, Open With), và chuyển sang Nguồn tab (xin vui lòng không sử dụng Visual trình soạn thảo, đây là một thảm họa), cuối cùng tôi đã hoàn thành mã của attribtues trên các thành phần composite.

enter image description here

Chỉ xmlns.jcp.org vẫn không hoạt động được. Đó là một vấn đề cụ thể của Eclipse và có thể đã được khắc phục trong sao Hỏa hoặc mới hơn.Bạn luôn có thể ẩn các namespace composit đằng sau một namespace XML tùy chỉnh như sau:

/WEB-INF/my.taglib.xml

<?xml version="1.0" encoding="UTF-8"?> 
<facelet-taglib 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd" 
    version="2.2" 
> 
    <namespace>http://example.com/my</namespace> 
    <composite-library-name>components</composite-library-name> 
</facelet-taglib> 

/WEB-INF/web.xml

<context-param> 
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name> 
    <param-value>/WEB-INF/my.taglib.xml</param-value> 
</context-param> 

enter image description here

Vì vậy, tóm tắt:

  • Bật tính năng dự án JSF trong thuộc tính của dự án để hoàn thành mã trên thẻ hỗn hợp.
  • Cài đặt Công cụ JBoss để hoàn tất mã trên các thẻ tham gia trong thẻ hỗn hợp.
  • Bật cơ sở Kiến thức công cụ JBoss trong thuộc tính của dự án.
  • Có một JSF 2.2 vật lý cấy JAR vào đường xây dựng để hỗ trợ xmlns.jcp.org trên thẻ tiêu chuẩn.
  • Sử dụng java.sun.com Miền không gian tên XML hoặc thẻ tag tùy chỉnh (hoặc phiên bản Eclipse mới hơn) trên thẻ kết hợp.
+0

Như bạn đã nói, trong phiên bản Luna, không gian tên mới vẫn không hoạt động. –

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