在我的JSF页面中,我很少Links{link1,link2,link3,link4}-{Student Id's}.
我尝试的是当我点击链接时它在"NEW WINDOW".
当我点击下一个链接时,它是打开一个新窗口,但我想在同一个新窗口中打开,即目标应该是打开的同一个新窗口。
Diagramatical Representation:
我从STACKOVERFLOW Open Page in New Window收集东西时试过的一段代码:
<p:dataTable id="studentDtTble" var="studData" value="#{studentController.dataList}">
<p:columnGroup type="header">
<p:row>
<p:column headerText="StudentId"></p:column>
<p:column headerText="StudentName"></p:column>
<p:column headerText="Add" ></p:column>
</p:row>
</p:columnGroup>
<p:column>
<p:commandLink id="sidlink" action="/studentinfo.xhtml" target="_blank">
<h:outputText value="#{studData.studentId}" styleClass="txtlink" />
</p:commandLink>
</p:column>
<p:column>
<h:outputText value="#{studData.studentName}" />
</p:column>
<p:column >
<p:selectBooleanCheckbox value="#{studData.add}" />
</p:column>
</p:dataTable>
@Nosnhoj回复后编辑:When i Click on any of the SID Link then there Details Should Opened in the "Same NEW Window".
答案 0 :(得分:5)
使用<h:commandLink>
代替<p:commandLink>
。
我尝试了你的代码并做了一点改变:
<h:commandLink id="sidlink" action="#{studentController.selectStudent(studData)}" target="_blank">
<h:outputText value="#{studData.studentId}" styleClass="txtlink" />
</h:commandLink>
我将<p:commandLink>
更改为<h:commandLink>
,并且调用辅助bean中的方法来设置所选的学生。(对于{{ 1}}应该需要学生信息。)
以下是New Window
的代码:
studentController.selectStudent
以下是private Student selectedStu;
public String selectStudent(Student stu) {
selectedStu = stu;
return "/studentinfo.xhtml";
}
的代码:
New Window
其中只显示所选学生的姓名,以及您想要的其他链接
请注意, <h:form>
<h:commandLink value="Another Link" action="/anotherinfo.xhtml" target="_self"/>
<br/>
Student: <h:outputText value="#{studentController.selectedStu.studentName}"/>
</h:form>
属性为target
,因为您希望新页面显示在同一窗口中。
最后,_self
只是我通过NetBeans创建的空白页面,所以不需要发布它。
以下是您可能会看到的内容:
点击“Johnson”的id后:
点击“另一个链接”后:
由于@ User2561626解释了他/她的意图,我更新了我的答案如下:
如果您希望弹出 新窗口 而不是 新标签 ,则应更改以下代码:< / p>
anotherinfo.xhtml
我将<p:commandLink id="sidlink" actionListener="#{studentController.selectStudent(studData)}" oncomplete="window.open('studentinfo.xhtml', 'newwindow', 'width=300, height=250');">
<h:outputText value="#{studData.studentId}" styleClass="txtlink" />
</p:commandLink>
更改回<h:commandLink>
,将<p:commandLink>
改为action
,因为我们想先设置所选的学生,最后我在actionListener
中添加window.open
{1}}属性,以便新页面将在新窗口中打开,但不会在制表符中打开
当然,我们需要编辑方法oncomplete
,如下所示:
studentController.selectStudent()
正如您所看到的,返回类型现在是 void ,此方法唯一可以做的就是设置所选的学生。
希望这可能有所帮助。