Thành phần jsf nào có thể kết xuất thẻ div?


129

Vd: h:inputTextsẽ kết xuất a "input type='text'". Thẻ jsf nào có thể kết xuất "div"thẻ?


4
Hãy ghi nhớ với Facelets và các phiên bản mới hơn của JSF, bạn có thể tự do trộn các thẻ HTML tiêu chuẩn với các thẻ JSF của mình.
vẽ

Điểm hay, nhưng thật không may, tôi bị mắc kẹt với một phiên bản rất cũ.
user101442

Câu trả lời:


234

Bạn có thể tạo một DIVthành phần bằng cách sử dụng <h:panelGroup/>. Theo mặc định, <h:panelGroup/>sẽ tạo SPAN trong mã HTML.

Tuy nhiên, nếu bạn chỉ định layout="block", thì thành phần sẽ là một DIVmã HTML được tạo.

<h:panelGroup layout="block"/>

9
Không kết xuất cho tôi trừ khi tôi thêm lớp kiểu hoặc kiểu vào nhóm bảng điều khiển, sử dụng triển khai mojarra-1.2_15.
James McMahon

3
Phụ lục, hoặc đặt thuộc tính ID. Nếu tôi không làm điều này, nó chỉ hiển thị trong HTML mà không có các thẻ DIV xung quanh.
James McMahon

1
chúng ta không nên sử dụng divthẻ chính nó? Điều gì có thể là vấn đề nếu có?
Rajat Gupta

4
@Marcos Tất nhiên, bạn có thể sử dụng divthẻ, nhưng trong trường hợp này, thành phần này sẽ không phải là một phần của cây thành phần JSF (tức là không có sẵn trong mã Java). Ngoài ra, bạn sẽ không thể làm mới nó trực tiếp bằng Ajax (tất nhiên, ngoại trừ, nếu bạn thực hiện làm mới trực tiếp trong một số mã JavaScript của mình).
Romain Linsolas

1
Câu trả lời chỉ là một nửa của sự thật. Xem ở đây docs.oracle.com/javaee/5/javaserverfaces/1.2/docs/tlddocs/h/... hay đây docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/... . Thông tin quan trọng là bạn cũng cần một stylehoặc styleClassthuộc tính divđể xảy ra ... điều này làm cho câu chuyện hoàn toàn lạ IMHO: một đồng bằng <h:panelGroup layout="block">sẽ hiển thị một <span>? Nó không có ý nghĩa với tôi.
Kawu

18

Trong JSF 2.2, có thể sử dụng các phần tử thông qua :

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:jsf="http://xmlns.jcp.org/jsf">
    ...
    <div jsf:id="id1" />
    ...
</html>

Yêu cầu là phải có ít nhất một thuộc tính trong thành phần sử dụng không gian tên jsf.


14

Ngoài <h:panelGroup>thành phần (gây bất ngờ cho tôi), bạn có thể sử dụng <f:verbatim>thẻ với tham số thoát được đặt falseđể tạo bất kỳ đánh dấu nào bạn muốn. Ví dụ:

<f:verbatim escape="true">
    <div id="blah"></div>
</f:verbatim>

Hãy nhớ rằng nó kém thanh lịch hơn một chút so với panelGroupgiải pháp, vì bạn phải tạo điều này cho cả thẻ bắt đầu và thẻ kết thúc nếu bạn muốn bọc bất kỳ mã JSF nào của mình bằng divthẻ.

Ngoài ra, tất cả các Khung UI chính đều có divthẻ thành phần hoặc bạn có thể tự viết.


4
chúng ta có nên sử dụng thẻ div không? Điều gì có thể là vấn đề nếu có?
Rajat Gupta


-3

Tôi nghĩ rằng chúng tôi có thể sử dụng thẻ nguyên văn, vì trong thẻ này, chúng tôi sử dụng bất kỳ thẻ HTML nào


Nghiêm túc? TẠI SAO? Thẻ nguyên văn là một cái gì đó có liên quan trong thời đại jsp. Trong kỷ nguyên facelets (10 năm nay?), Nó hầu như không cần thiết, chắc chắn trong trường hợp này.
Kukeltje
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.