从javascript window.open转到Rich:ModalPanel

时间:2012-03-09 13:53:15

标签: jsf richfaces

在我的Web应用程序中,目前有许多由各种JS函数生成的弹出窗口,我想用Rich替换:ModalPanel(我使用的是Myfaces 2.0.12和RichFaces 3.3.3)。以下是我想要替换的典型示例:

   window.open("<%=basePath1%>jsp/custhistory.faces?userid="+pk);

其中pk是从javascript函数中的隐藏输入(例如<h:inputHidden id="userPk" value="#{1234}"/>)重试的值,然后添加到上面的url的末尾。

看几个RichFaces ModalPanel示例(和演示)我无法弄清楚如何使用ModalPanel完成上述工作。有人可以提供资源的示例或链接

1 个答案:

答案 0 :(得分:0)

我一直在使用Richfaces 4,但同样的理论应该适用。

模态面板本质上是一个可以显示或隐藏的div,因此如果您特别需要(或希望)该面板是一个单独的文件,您可以在其中添加<ui:include>

模态面板呈现为页面的一部分,但我认为样式为display:none。如果这是由客户端操作触发的,则可以调用Richfaces API以显示命令面板。

例如,而不是触发Richfaces.$('elName').show()的命令(Link | Button),它可以触发你的模态面板需要设置和值/参数的js函数,然后调用.show()本身。

注意:IE和Firefox有一个真正的模态弹出窗口。这不是真正的模态,javascript将在后台处理,如果你没有将焦点放在弹出面板上,如果用户输入它将在后台与应用程序进行交互。

我曾使用模态js弹出窗口来提示用户在其成语类型中是/否问题

if(askUser("some question?")=='yes'){
    //some code to do if yes
}else{
    //some code to do if no
}

根据你想要这个弹出窗口的通用程度,如果不使用被触发的事件并为该事件定义事件处理程序来处理函数的其余部分,这实际上是不可能的。