ฉันจะแทรกอักขระเว้นวรรคที่ไม่ทำลายได้อย่างไร & nbsp; ในหน้า JSF?


86

ฉันจะแทรกอักขระเว้นวรรคในหน้า JSF เช่นเดียวกับที่ฉันทำได้ใน HTML โดยใช้ อย่างไร มีแท็กดังกล่าวใน JSF หรือไม่?


2
ที่เกี่ยวข้อง (และในทางเทคนิคซ้ำกับคำอธิบายที่ดีกว่ามาก): Error Parsing /page.xhtml: Error Traced (บรรทัด: 42) เอนทิตี“ nbsp” ถูกอ้างอิง แต่ไม่ได้ประกาศ
BalusC

คำตอบ:


177

สิ่งนี้จะได้ผล

<h:outputText value="&#160;" />

5
เหตุใดจึง<h:outputText>ต้องมี
alexander

อันที่จริงการใช้หมายเลข HTML ไม่ใช่ทางลัด html อื่น ๆ เป็นวิธีที่จะไป
Dnl

50

การใส่หมายเลข HTML เป็นเคล็ดลับสำหรับฉันโดยตรง:

&#160;

โอ้ฉันแค่อยากจะให้คำตอบในตอนนี้ ดีใจที่ฉันไม่ได้ดูแลคุณ
alexander

18

หากคุณใช้ไลบรารี RichFaces คุณยังสามารถใช้แท็ก rich: spacer ซึ่งจะเพิ่มรูปภาพ "ล่องหน" ที่มีความยาวและความสูงที่กำหนด มักจะง่ายกว่าและสวยกว่าการเพิ่มตัน

ในกรณีที่คุณต้องการให้ Space ของคุณแสดงเพียงแค่เพิ่ม:

<rich:spacer height="1" width="2" />

+1 ต่อสิ่งนี้ไม่ได้ถูกถามอย่างตรงไปตรงมาที่นี่ แต่คำตอบของคุณมีประโยชน์กับฉัน (การเขียนชื่อเรื่อง)
stacker

5
เหมือนกันที่นี่แท็กนี้ยังมีอยู่ใน PrimeFaces:<p:spacer />
Daniel Szalay


6

ในที่สุดคุณสามารถลองใช้อันนี้ได้หากใช้&nbsp;ล้มเหลว ...

<h:outputText value="& nbsp;" escape="false"/>

(เช่นทอมฉันเพิ่มช่องว่างระหว่าง&และnbsp;)


ฉันรู้สึกว่าการหลบหนีมีความสำคัญมากซึ่งอาจทำให้เกิดวิธีแก้ปัญหาที่ไม่ปลอดภัย การเลิกหลบหนีเพียงองค์ประกอบ html อื่น ๆ เป็นเรื่องยุ่งยาก นอกจากนี้ 'ช่องว่าง' อาจถูกลืม สิ่งนี้ค่อนข้างละเอียดในขณะที่มีทางเลือกที่สั้นกว่า
Dnl


4

ฉันพบว่าโปรแกรมแยกวิเคราะห์จะบ่นหากฉันใช้&nbsp;เอนทิตีในเพจของฉัน หลังจากการค้นคว้าเล็กน้อยฉันได้เรียนรู้ว่าถ้าฉันเพิ่มการประกาศ DOCTYPE ที่ส่วนเริ่มต้นของหน้าเอนทิตีนั้นได้รับอนุญาต ฉันใช้การประกาศ DOCTYPE นี้:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

ผลข้างเคียงของสิ่งนี้คือรหัสผลลัพธ์ (ดังที่เห็นได้จากการใช้คุณลักษณะ "ดูแหล่งที่มา" ของเว็บเบราว์เซอร์) ไม่มี&nbsp;เอนทิตีอยู่จริง แทนที่จะรวมอักขระจริงที่แสดงถึงช่องว่างที่ไม่แตก แม้ว่ามันจะได้ผล แต่ก็ไม่ใช่สิ่งที่ฉันต้องการจริงๆ ฉันยังคงมองหาวิธีทำให้ parser ไม่แทนที่เอนทิตีด้วยอักขระ

ข้อมูลเพิ่มเติมที่นี่: http://java.net/jira/browse/JAVASERVERFACES-1576


2

คุณสามารถใช้primefacesไลบรารี

 <p:spacer width="10" />

สิ่งนี้ไม่ได้ให้คำตอบสำหรับคำถาม เมื่อคุณมีเพียงพอชื่อเสียงคุณจะสามารถที่จะแสดงความคิดเห็นในโพสต์ใด ๆ ; แทนที่จะให้คำตอบที่ไม่จำเป็นต้องชี้แจงจากผู้ถาม - จากรีวิว
Luca Detomi

@ihebiheb ใช้เวลา +6 อย่าบอกฉันว่ามันผิดเพราะฉันรู้ว่ามันจริงแค่คุณพูดว่า blah blah ..
Mohamed Aymen Charrada

คำตอบของคุณถูกระบุว่าสั้นเกินไปเนื่องจากไม่มีรายละเอียด ฉันขอแนะนำให้คุณเพิ่มรายละเอียดเพื่อให้ผู้ใช้เข้าใจว่า "ทำไม" โซลูชันของคุณอาจเป็นวิธีที่ดีหรืออาจจะดีที่สุด การเพิ่มรายละเอียดให้ผู้ใช้ปรับแก้ปัญหาของคุณให้เข้ากับปัญหาที่แตกต่างกันเล็กน้อย
Luca Detomi

1

เพียงเพื่อเพิ่มตัวเลือก: ใช้<h:outputText value="&amp;nbsp;" escape="false"/>งานได้


ฉันรู้สึกว่าการหลบหนีมีความสำคัญมากซึ่งอาจเป็นการหลีกทางให้กับโซลูชันที่ไม่ปลอดภัย การเลิกหลบหนีเพียงองค์ประกอบ html อื่น ๆ เป็นเรื่องยุ่งยาก นอกจากนี้สิ่งนี้ค่อนข้างละเอียดในขณะที่มีทางเลือกที่สั้นกว่า
Dnl


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.