ฉันยังใหม่กับ JSF และ Primefaces ฉันต้องเปิดกล่องโต้ตอบที่มีข้อมูลผลการค้นหาบางประเภททุกครั้งที่คลิกปุ่มค้นหา ควรแสดงกล่องโต้ตอบที่เปิดไว้ก่อนหน้านี้เสมอ เว้นแต่ผู้ใช้จะปิด ดังนั้นฉันจึงสามารถเปิดหลายกล่องโต้ตอบได้
ฉันใช้เทคโนโลยีด้านล่าง และปัญหาของฉันคือฉันต้องการใช้เทมเพลต xhtml เดียวสำหรับกล่องโต้ตอบที่ฉันเรียกใช้โดยใช้เฟรมเวิร์กกล่องโต้ตอบ Primefaces มีความคิดบ้างไหมว่าจะบรรลุสิ่งที่ฉันต้องการได้อย่างไร?
- เจบอส EAP 6.2
- ไพรม์เฟส 4.0
- เจเอสเอฟ 2.2
ฉันมีโค้ดตัวอย่างที่ฉันพยายามใช้เป็น POC ด้านล่าง มันทำงานได้ดี ฉันสามารถแสดงกล่องโต้ตอบแรกได้ แต่ฉันไม่รู้ว่าจะเปิดกล่องโต้ตอบอื่นได้อย่างไรเมื่อคลิกปุ่มค้นหาอีกครั้ง
home.xhtml
<div id="searchBtnDiv">
<p:commandButton id="queryNetworkElem" value="Search" ajax="true" actionListener="#{searchBean.querySubmit}" />
<p:commandButton id="advanceQuery" value="Advance Search" ajax="true" actionListener="#{searchBean.querySubmit}" />
</div>
SearchBean.java
@ManagedBean(name = "searchBean")
public class SearchBean{
...
public void generateSearchDialog(String searchParam) throws IOException{
System.out.println("opening dialog");
testMessage = "testing ";
RequestContext.getCurrentInstance().openDialog("test");
}
...
}
ทดสอบ.xhtml
<?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:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<h:head>
</h:head>
<h:body>
<h1><p:outputLabel value="#{searchBean.testMessage}"/></h1>
<p:commandButton value="test" />
</h:body>
</html>