我正在使用jsf
和primefaces
。
我有一个表单,其中我有StudentId
输入文本和命令链接到新Student Details
和Pop-Up
命令按钮中显示Get
以显示< / p>
我希望在点击获取按钮时实现此目的。
这是我的代码:
查看页面
...//js code is below ..
<h:outputText value="StudentId :" />
<p:inputText value="#{myController.studentId}" >
<pe:keyFilter mask="num"/>
</p:inputText>
<p:commandButton value="Get" actionListener="#{myController.getStudentMarksDetails(myController.studentId)}" >
<p:commandLink onclick="openWindow('http://www.google.com','pageName')" >
<h:outputText value="Student Info ">
</p:commandLink>
...//Displays Student Marks
myController的
public Student getStudentMarksDetails(Long studentId){
//Some Code to Get the Student Marks
// I want to Check whether a Pop-Up already exists or not, if pop-up is opened then refresh with this url
RequestContext.getCurrentInstance().execute("updatePopUpWindow('http://stackoverflow.com','pageName');");
}
我的JS
var myWindow;
//Opens in the Same window
function openWindow(url, name){
myWindow = window.open(url, name,'status=no,toolbar=no,location=no,menubar=no,resizable,width=1008,height=690,scrollbars,left=100,top=50,').focus();
}
// To check whether a Pop-Up window is opened or not
//if the pop-up window with pageName is not Opened before then dont open a Pop-Up.
//if the pop-up window is already opened, then refresh that window with new arguments.
function updatePopUpWindow(url, name){
if(myWindow!=null){
if(!myWindow.closed){
myWindow.close();
}
}
//Check the condition Here
myWindow = window.open(url, name,'status=no,toolbar=no,location=no,menubar=no,resizable,width=1008,height=690,scrollbars,left=100,top=50,').focus();
}
我尝试过放置此条件但没有用:
if(myWindow.name == name){
myWindow = window.open(url, name,'status=no,toolbar=no,location=no,menubar=no,resizable,width=1008,height=690,scrollbars,left=100,top=50,').focus();
}
我提到了许多links,但无法解决我需要的方式。
如何在JQuery
中实现此问题,因为JS
属性与浏览器无关
更新评论 我不能使用PF Dialog,因为我不知道外部服务链接将如何以及什么类型的数据和视图。认为我不是我传递给学生详细信息的URL的作者。
答案 0 :(得分:0)
我认为可能(也可能不是)您可以使用PF Dialog。取决于您要在其中显示的页面。我使用以下示例在对话框中显示外部页面的内容:
托管bean
@ManagedBean
@ViewScoped
public class Bean {
private String myURL;
public Bean() {
myURL = "http://www.stuba.sk/english.html";
}
public void handleUpdateDialog(){
myURL = "http://www.stuba.sk/english/news/news.html";
}
//getters and setters
...
}
XHTML
<h:form>
<p:commandButton value="Show Dialog" oncomplete="dlg.show();" update="dlgId"/>
<p:commandButton value="Update Dialog" actionListener="#{bean.handleUpdateDialog}" oncomplete="dlg.show();" update="dlgId"/>
<p:dialog id="dlgId" widgetVar="dlg">
<iframe frameborder="0" align="left"
src="#{bean.myURL}" id="someId" scrolling="auto"
width="600" height="500">
</iframe>
</p:dialog>
</h:form>
如您所见,我在PF Dialog中使用了iframe,我可以更新(也刷新)。如果您想像这样使用它,有一些优点和缺点。对您而言,好消息是可以刷新此对话框。 然而,此解决方案的主要缺点是不适用于每个外部网页,因为有很多页面由于'X而无法在框架中显示-Frame-Options'设置(例如google.com,facebook.com ...),除非您是该页面的作者,否则您不能受到影响。