//I'm having a command button like
<af:commandButton text="Validate"
binding="#{backingBeanScope.backing_Second.cb2}"
id="cb2"
action="#{backingBeanScope.backing_Second.cb2_ClickAction}">
<af:showPopupBehavior popupId="p11" />
</af:commandButton>
//Popup dialog contains
<af:popup id="p11">
<af:dialog id="d2"
dialogListener="#{backingBeanScope.backing_Second.getAddressDialogListener}">
<af:panelLabelAndMessage label="Enter the Password for DataSource " id="plam13"/>
<af:inputText label="password" value="#{backingBeanScope.backing_Second.password}" id="it455"/>
</af:dialog>
</af:popup>
//Dialog listener in backing bean having
public void getAddressDialogListener(DialogEvent dialogEvent) {
System.out.println("" + this.getPassword());
SampleJdbc.DB_PASSWORD=this.getPassword();}
支持bean中的cb2_ClickAction返回onestring,并使用此字符串重定向到下一页。 我的要求是,当我点击验证时,它会在弹出窗口中询问密码并获取该密码,然后调用cb2_ClickAction并重定向到下一页。它无效。
答案 0 :(得分:6)
仅使用命令按钮显示弹出窗口
<af:commandButton text="commandButton 1" id="cb1">
<af:showPopupBehavior popupId="p1"/>
</af:commandButton>
<af:popup id="p1">
<af:dialog id="d2" dialogListener="#{PopupBean.myDialogListner}"/>
</af:popup>
并使用对话框侦听器验证密码并重定向
public void myDialogListner(DialogEvent dialogEvent) {
if(dialogEvent.getOutcome() == DialogEvent.Outcome.ok){
FacesContext fctx = FacesContext.getCurrentInstance();
try {
fctx.getExternalContext().redirect("untitled1.jspx");
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:2)
行动应仅用于导航(=最佳做法,而不是规则)。 如何使用ActionListener事件并显示来自辅助bean的弹出窗口。代码示例here。 AL在Action之前触发,因此您可以评估用户操作并选择返回字符串以进行导航。
答案 2 :(得分:0)
Showpopup行为取消了动作事件。所以两者都不能并排。在您的情况下,尝试使用render kit类从actionlistener代码中执行弹出行为。