คำถามติดแท็ก jsf

JavaServer Faces (JSF) เป็นเฟรมเวิร์กโมเดลมุมมองผู้นำเสนอโดยทั่วไปใช้เพื่อสร้างเว็บแอปพลิเคชันที่ใช้รูปแบบ HTML การใช้ส่วนประกอบมาตรฐานและชุดการแสดงผลสามารถกำหนดมุมมอง HTML ที่มีสถานะโดยใช้แท็ก Facelets หรือ JSP และเชื่อมต่อกับข้อมูลแบบจำลองและตรรกะของแอปพลิเคชันผ่านการสนับสนุนถั่ว


2
เมื่อใดที่ฉันควรใช้ h: outputLink แทน h: commandLink
เมื่อใดที่ฉันควรใช้<h:outputLink>แทน<h:commandLink>? ฉันเข้าใจว่ามีการcommandLinkสร้างโพสต์ HTTP ฉันคาดเดาว่าoutputLinkจะสร้าง HTTP gets ที่กล่าวว่าเนื้อหาการสอน JSFส่วนใหญ่ที่ฉันอ่านใช้commandLink(เกือบ?) เท่านั้น บริบท: ฉันกำลังใช้โครงการสาธิตเล็ก ๆ น้อย ๆ ที่แสดงลิงก์ส่วนหัวไปยังหน้าผู้ใช้เหมือนกับ Stack Overflow ... ... และฉันไม่แน่ใจว่าcommandLink(อาจจะใช้?faces-redirect=trueสำหรับบุ๊กมาร์ก) หรือoutputLinkเป็นตัวเลือกที่ถูกต้อง
129 jsf  jsf-2 

16
การระบุและการแก้ปัญหา javax.el.PropertyNotFoundException: Target Unreachable
เมื่อพยายามอ้างอิง bean ที่ได้รับการจัดการใน EL เช่นนั้น#{bean.entity.property}บางครั้งjavax.el.PropertyNotFoundException: Target Unreachableจะมีการโยนข้อยกเว้นโดยปกติเมื่อต้องการตั้งค่าคุณสมบัติ bean หรือเมื่อมีการเรียกใช้การดำเนินการ bean ดูเหมือนจะมีข้อความห้าประเภทที่แตกต่างกัน: เป้าหมายไม่สามารถเข้าถึงได้ตัวระบุ 'bean' ถูกแก้ไขเป็น null เป้าหมายไม่สามารถเข้าถึงได้ 'เอนทิตี' ส่งคืนค่าว่าง เป้าหมายไม่สามารถเข้าถึงได้ 'null' ส่งคืนค่าว่าง เป้าหมายไม่สามารถเข้าถึงได้ '' 0 '' ส่งคืนค่าว่าง เป้าหมายไม่สามารถเข้าถึงได้ 'BracketSuffix' ส่งคืนค่า null พวกเขาทั้งหมดหมายถึงอะไร? มีสาเหตุมาจากอะไรและควรแก้ไขอย่างไร?

2
ความแตกต่างระหว่าง JSP EL, JSF EL และ Unified EL [ปิด]
มันยากที่จะบอกว่ากำลังถามอะไรที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือมีวาทศิลป์และไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันต้องการทราบความแตกต่างโดยละเอียดระหว่าง Expression Languages ​​(EL) มี JSP EL, JSF EL และ Unified EL ฉันต้องการทราบประวัติเบื้องหลัง EL และ EL ล่าสุดที่ใช้ในแอปพลิเคชัน Java EE คืออะไร EL เป็นเรื่องธรรมดาสำหรับเทคโนโลยีมุมมองทั้งหมดในเวอร์ชันล่าสุดหรือไม่
122 jsp  jsf  jakarta-ee  el 

6
โครงสร้างถั่วสำรอง JSF (แนวทางปฏิบัติที่ดีที่สุด)
ฉันหวังว่าในโพสต์นี้ฉันจะได้รับความคิดเห็นของผู้คนเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดสำหรับอินเทอร์เฟซระหว่างหน้า JSF และถั่วสำรอง สิ่งหนึ่งที่ฉันไม่สามารถทำได้คือโครงสร้างของถั่วสำรองของฉัน นอกจากนี้ฉันไม่เคยพบบทความที่ดีเกี่ยวกับเรื่องนี้ คุณสมบัติอะไรที่อยู่ในถั่วสำรอง? เมื่อใดจึงเหมาะสมที่จะเพิ่มคุณสมบัติเพิ่มเติมให้กับถั่วที่กำหนดเมื่อเทียบกับการสร้าง bean ใหม่และเพิ่มคุณสมบัติลงไป สำหรับการใช้งานที่เรียบง่ายควรมีแบ็คกิ้งบีนเพียงอันเดียวสำหรับทั้งหน้าโดยพิจารณาถึงความซับซ้อนที่เกี่ยวข้องกับการฉีดถั่วหนึ่งเข้าไปในอีกอันหนึ่ง backing bean ควรมีตรรกะทางธุรกิจจริงหรือไม่หรือควรมีข้อมูลอย่างเคร่งครัด? อย่าลังเลที่จะตอบคำถามเหล่านี้และคำถามอื่น ๆ ที่อาจเกิดขึ้น สำหรับการลดการเชื่อมต่อระหว่างเพจ JSF และแบ็คกิ้งบีนฉันไม่เคยอนุญาตให้เพจ JSF เข้าถึงคุณสมบัติของแบ็คกิ้งบีน ตัวอย่างเช่นฉันไม่อนุญาตบางสิ่งเช่น: <h:outputText value="#{myBean.anObject.anObjectProperty}" /> ฉันต้องการบางสิ่งบางอย่างเช่น: <h:outputText value="#{myBean.theObjectProperty}" /> ด้วยค่าถั่วสำรองที่: public String getTheObjectProperty() { return anObject.getAnObjectProperty(); } เมื่อฉันวนซ้ำคอลเลกชันฉันใช้คลาส wrapper เพื่อหลีกเลี่ยงการเจาะลึกลงไปในวัตถุในตารางข้อมูลเป็นต้น โดยทั่วไปแนวทางนี้ให้ความรู้สึก "ถูกต้อง" สำหรับฉัน หลีกเลี่ยงการมีเพศสัมพันธ์ระหว่างมุมมองและข้อมูล กรุณาแก้ไขฉันถ้าฉันผิด
118 java  jsf 


8
ความต้องการของ JSF คืออะไรเมื่อ UI สามารถทำได้ด้วยไลบรารี JavaScript เช่น jQuery และ AngularJS
ฉันอ่านเกี่ยวกับ JSF ซึ่งเป็นกรอบงาน UI และมีส่วนประกอบ UI บางอย่าง แต่จะดีกว่าหรือแตกต่างอย่างไรจากจำนวนส่วนประกอบที่มีให้เลือกตั้งแต่ jQueryUI, AngularJS, ExtJS หรือแม้แต่ HTML ธรรมดา, CSS และ JavaScript ทำไมคนถึงควรเรียน JSF

5
ถั่วสำรอง (@ManagedBean) หรือ CDI Beans (@Named)?
ฉันเพิ่งเริ่มอ่านผ่านCore JavaServer Faces, 3rd Ed และพวกเขาพูดแบบนี้ (เน้นของฉัน): เป็นอุบัติเหตุทางประวัติศาสตร์ที่มีกลไกสองอย่างแยกกันคือถั่ว CDI และถั่วที่จัดการโดย JSF สำหรับถั่วที่สามารถใช้ในหน้า JSF ได้ เราขอแนะนำให้คุณใช้เมล็ดพันธุ์ CDIเว้นแต่ว่าแอปพลิเคชันของคุณจะต้องใช้งานกับ servlet runner ธรรมดาเช่น Tomcat ทำไม? พวกเขาไม่ได้ให้เหตุผลใด ๆ ฉันใช้@ManagedBeanสำหรับถั่วทั้งหมดในแอปพลิเคชันต้นแบบที่ทำงานบน GlassFish 3 และฉันไม่ได้สังเกตเห็นปัญหาใด ๆ เกี่ยวกับสิ่งนี้เลย ฉันไม่ได้โดยเฉพาะอย่างยิ่งใจย้ายจาก@ManagedBeanไป@Namedแต่ฉันต้องการที่จะรู้ว่าทำไมฉันจึงควรรำคาญ
109 jsf  jakarta-ee  jsf-2  cdi 

1
เหตุใด JSF จึงบันทึกสถานะของส่วนประกอบ UI บนเซิร์ฟเวอร์
JSF บันทึกสถานะของส่วนประกอบ UI บนฝั่งเซิร์ฟเวอร์จนถึงช่วงเวลาใดและเมื่อใดที่ข้อมูลสถานะของคอมโพเนนต์ UI จะถูกลบออกจากหน่วยความจำเซิร์ฟเวอร์ ในฐานะผู้ใช้ที่ล็อกอินบนแอปพลิเคชันจะสำรวจหน้าต่างๆสถานะของส่วนประกอบจะยังคงสะสมอยู่บนเซิร์ฟเวอร์หรือไม่ ฉันไม่เข้าใจว่าการรักษาสถานะส่วนประกอบ UI บนเซิร์ฟเวอร์มีประโยชน์อย่างไร!? การส่งผ่านข้อมูลที่ตรวจสอบแล้ว / แปลงไปยังถั่วที่มีการจัดการโดยตรงไม่เพียงพอหรือไม่ ฉันสามารถหรือฉันควรพยายามหลีกเลี่ยงได้หรือไม่? นั่นไม่ใช้หน่วยความจำมากเกินไปในฝั่งเซิร์ฟเวอร์หรือไม่หากมีเซสชันผู้ใช้พร้อมกันหลายพันเซสชัน ฉันมีแอปพลิเคชันที่ผู้ใช้สามารถโพสต์บล็อกในบางหัวข้อได้ บล็อกนี้มีขนาดค่อนข้างใหญ่ เมื่อจะมีการโพสต์กลับหรือขอดูบล็อกข้อมูลขนาดใหญ่นี้จะถูกบันทึกเป็นส่วนหนึ่งของสถานะของส่วนประกอบหรือไม่? สิ่งนี้จะกินหน่วยความจำมากเกินไป นี่ไม่น่ากังวลเหรอ? อัปเดต 1: ตอนนี้ไม่จำเป็นต้องบันทึกสถานะขณะใช้ JSF อีกต่อไป การใช้งาน Stateless JSF ประสิทธิภาพสูงพร้อมให้ใช้งาน ดูบล็อกนี้และคำถามนี้เพื่อดูรายละเอียดและการสนทนาที่เกี่ยวข้อง นอกจากนี้ยังมีปัญหาที่เปิดอยู่เพื่อรวมไว้ในข้อกำหนด JSF ซึ่งเป็นตัวเลือกในการจัดเตรียมโหมดไร้สถานะสำหรับ JSF (PS พิจารณาลงคะแนนสำหรับปัญหานี้และนี้ถ้านี้เป็นคุณสมบัติที่มีประโยชน์สำหรับคุณ.) ปรับปรุง 2 (24-02-2556): ข่าวดีMojarra 2.1.19มาพร้อมโหมดไร้สัญชาติ ! ดูที่นี่: http://weblogs.java.net/blog/mriem/archive/2013/02/08/jsf-going-stateless?force=255 http://java.net/jira/browse/JAVASERVERFACES-2731 http://balusc.blogspot.de/2013/02/stateless-jsf.html

4
วิธีใช้ค่า enum ใน f: selectItem (s)
ฉันต้องการสร้างเมนูแบบเลื่อนลง selectOneMenu เพื่อที่ฉันจะได้เลือกสถานะสำหรับคำถามของฉัน เป็นไปได้หรือไม่ที่จะทำให้ f: selectItem มีความยืดหยุ่นมากขึ้นโดยพิจารณาว่าจะเกิดอะไรขึ้นหากลำดับของ enums เปลี่ยนไปและรายการมีขนาดใหญ่หรือไม่? และฉันจะทำได้ดีกว่านี้ไหม และเป็นไปได้หรือไม่ที่จะ "เลือก" รายการที่มีคำถาม? คลาส Enum public enum Status { SUBMITTED, REJECTED, APPROVED } เอนทิตีคำถาม @Enumerated(EnumType.STRING) private Status status; JSF <div class="field"> <h:outputLabel for="questionStatus" value="Status" /> <h:selectOneMenu id="questionStatus" value="#{bean.question.status}" > <f:selectItem itemLabel="Submitted" itemValue="0" /> <f:selectItem itemLabel="Rejected" itemValue="1" /> <f:selectItem itemLabel="Approved" itemValue="2" …

6
รับ JSF ที่มีการจัดการ bean ตามชื่อในคลาสที่เกี่ยวข้องกับ Servlet
ฉันกำลังพยายามเขียน servlet ที่กำหนดเอง (สำหรับ AJAX / JSON) ซึ่งฉันต้องการอ้างอิง@ManagedBeansตามชื่อ ฉันหวังว่าจะทำแผนที่: http://host/app/myBean/myProperty ถึง: @ManagedBean(name="myBean") public class MyBean { public String getMyProperty(); } เป็นไปได้ไหมที่จะโหลด bean โดยใช้ชื่อจาก servlet ปกติ มี servlet JSF หรือตัวช่วยที่ฉันสามารถใช้ได้หรือไม่ ดูเหมือนว่าฉันจะเสียฤดูใบไม้ผลิซึ่งทั้งหมดนี้ชัดเจนเกินไป

10
วิธีใช้ PrimeFaces p: fileUpload? วิธีการ Listener จะไม่ถูกเรียกใช้หรืออัปโหลดไฟล์เป็นโมฆะ / แสดงข้อผิดพลาด / ใช้งานไม่ได้
ฉันพยายามอัปโหลดไฟล์โดยใช้ PrimeFaces แต่fileUploadListenerวิธีนี้ไม่ถูกเรียกใช้หลังจากการอัปโหลดเสร็จสิ้น นี่คือมุมมอง: <h:form> <p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}" mode="advanced" update="messages" sizeLimit="100000" allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/> <p:growl id="messages" showDetail="true"/> </h:form> และถั่ว: @ManagedBean @RequestScoped public class FileUploadController { public void handleFileUpload(FileUploadEvent event) { FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded."); FacesContext.getCurrentInstance().addMessage(null, msg); } } ฉันได้วางเบรกพอยต์ไว้ในวิธีการแล้ว แต่ไม่เคยเรียก เมื่อใช้mode="simple"และajax="false"จะถูกเรียกใช้ แต่ฉันต้องการให้มันทำงานในโหมดขั้นสูง ฉันใช้ Netbeans และ Glassfish 3.1

4
ฉันจะส่งแถวที่เลือกไปยัง commandLink ภายใน dataTable หรือ ui: repeat ได้อย่างไร
ฉันใช้ Primefaces ในแอปพลิเคชัน JSF 2 ฉันมี a <p:dataTable>และแทนที่จะเลือกแถวฉันต้องการให้ผู้ใช้สามารถดำเนินการต่างๆในแต่ละแถวได้โดยตรง สำหรับสิ่งนั้นฉันมีหลายตัว<p:commandLink>ในคอลัมน์สุดท้าย ปัญหาของฉัน: ฉันจะส่ง ID แถวไปยังการดำเนินการที่เริ่มต้นโดยลิงก์คำสั่งได้อย่างไรเพื่อให้ฉันรู้ว่าต้องดำเนินการกับแถวใด ฉันลองใช้<f:attribute>: <p:dataTable value="#{bean.items}" var="item"> ... <p:column> <p:commandLink actionListener="#{bean.insert}" value="insert"> <f:attribute name="id" value="#{item.id}" /> </p:commandLink> </p:column> </p:dataTable> แต่จะให้ผลเป็น 0 เสมอ - เห็นได้ชัดว่าตัวแปรแถวfไม่พร้อมใช้งานเมื่อแสดงผลแอตทริบิวต์ (ใช้งานได้เมื่อฉันใช้ค่าคงที่) ใครมีทางเลือกอื่น


2
ViewParam กับ @ManagedProperty (value =“ # {param.id}”)
อะไรคือความแตกต่างระหว่างการกำหนด View Params ดังนี้: <f:metadata> <f:viewParam name="id" value="#{someBean.id}"/> </f:metadata> และกำหนดคุณสมบัติใน ManagedBean ดังนี้: @ManagedProperty(value = "#{param.id}") private Integer id;

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