Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 处理链接操作后显示对话框_Jsf_Primefaces - Fatal编程技术网

Jsf 处理链接操作后显示对话框

Jsf 处理链接操作后显示对话框,jsf,primefaces,Jsf,Primefaces,我有一个primeface页面certHollderList.xhtml: 在这个页面中,我有一个过期链接。然后单击一个动作被触发,在处理该动作之后,我想在同一页面中打开一个对话框 code 1:Expire Link:: <h:commandLink id="expire" value="#{label.expire}" action="expire" immediate="true" oncomplete="dlg3.show()"

我有一个primeface页面certHollderList.xhtml: 在这个页面中,我有一个过期链接。然后单击一个动作被触发,在处理该动作之后,我想在同一页面中打开一个对话框

code 1:Expire Link::
    <h:commandLink id="expire" value="#{label.expire}" action="expire" immediate="true" oncomplete="dlg3.show()"
                                           update="dialogPanel">

 code 2 :: In the same page i added one outputpanel having a dialog box.

                                                                                                    <h:form> 
            <p:outputPanel id="dialogPanel" rendered="#     {certHolderSearchHandler.openDialog eq 'Success'}">
            <p:dialog header="Expire Holder Information" widgetVar="dlg3"
                showEffect="bounce" hideEffect="explode" appendToBody="true">
                <p:outputPanel id="dialogPanel1"
                    rendered="#{certHolderSearchHandler.openDialog eq 'Success'}">
                    <h:panelGrid columns="2">
                        <h:outputText value="Do you want to continue?" />
                        <p:spacer width="30" height="10" />
                        <h:outputText />
                        <p:spacer width="30" height="10" />
                    </h:panelGrid>
                    <div align="left"><p:commandButton immediate="true"
                        value="Yes" action="continue" /> <p:spacer width="25" height="5" />
                    <p:commandButton value="No" action="cancel" /></div>
                </p:outputPanel>
            </p:dialog>      
        </p:outputPanel>
    </h:form>
code 1:过期链接::
代码2::在同一页中,我添加了一个带有对话框的outputpanel。
当我点击expire链接时,它没有打开对话框页面。
请告诉我:(

尝试使用Primefaces模型实际更新它:

 //JSF
 <h:form id="someForm">
   <p:commandLink
      id = "expire"
      value="#{label.expire}"
      actionListener="#{myBean.doSomething}"
      oncomplete="dialog.show()"
      update="dialogForm:dialogPanel"
   />
    ...

<h:form id="dialogForm">
  <p:dialog id="dialog"..... />
</h:form>

//MyBean...
public void doSomething(ActionEvent evt)
{
  //Logic
}
JSF演示文件如下:

<?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://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"  
xmlns:p="http://primefaces.prime.com.tr/ui">


<h:head>
</h:head>

<h:body class="center" style="zIndex:-3">
    <h:form id="commands">
        <p:inputText value="#{demoBean.hello}" />
        <p:commandButton 
            value="Open Dialog"
            actionListener="#{demoBean.doAction}"
            update="dialog"
            oncomplete="dialogWidget.show()"
        />
    </h:form>

    <p:dialog widgetVar="dialogWidget">
        <h:form id="dialog">
            <p:panel>
                <h3>Dialog</h3>
                <p>
                    <h:outputText value="Copied: #{demoBean.notSet}"/>
                </p>
            </p:panel>
        </h:form>       
    </p:dialog>
</h:body>    

对话

在Primefaces中需要注意的是,它没有使用内置的AJAX实现(它是兼容的,但可能会有“双重”更新,因此无法正确渲染)因此,当您使用widgetVar直接从Javascript调用show方法时,您会注意到此代码执行更新,然后调用该方法。


    <p:commandLink id="expire" value="#{label.expire}" onclick="dlg3.show()">
                               <f:param name="certHoldertId" value="#{certHolder.accountOwner.itemIdInfo.insurerId}" />
                               <f:param name="accNumberId" value="#{certHolder.accountNumberId}"/>
                            </p:commandLink>
@Daniel..使用按钮可以正常工作,也可以在单击此链接时调用弹出窗口。但是我们可以通过此链接传递值。当我们尝试使用FaceContext检索certHoldertId Variable的值时,它会给出空值。我认为它会返回假值


我们如何通过此链接发送这些值?

我对其进行了测试,它没有调用弹出窗口:(@Vikas我已经用第二个已测试的示例更新了此值。我认为这非常简单。另外,请记住,“更新”是Primefaces API的一部分,它不绑定(使用p:commandLink)@Danial…现在它可以调用弹出窗口,但我们无法通过此链接传递值…@Vikas,我需要查看所有代码以详细回答-但您需要使用actionListener才能“查看”值。我的示例从文本框中提取数据,然后通过ActionListener更新bean,然后更新对话框——然后通过oncomplete=“dialog.show()”通知对话框显示。我希望这会有帮助。保持简单,然后放置在对话框中。@Daniel…非常感谢…..我使用发送值时单击expire链接,工作正常…..您仍然需要以某种方式通过faces上下文传递一个值--上面的代码将具有参数,但如果您想下拉它们,则需要获取以下信息:来自某个地方的信息。这意味着在对话框中刷新包含参数的表单,或者您可以使用属性并在服务器端处理它。我始终更喜欢服务器端解决方案,因为它更易于调试(使用操作侦听器)。因为您使用的是AJAX,所以URL不会更新(使URL上的查询为空)。在此情况下,请尝试使用操作事件或RequestScope变量。
    <p:commandLink id="expire" value="#{label.expire}" onclick="dlg3.show()">
                               <f:param name="certHoldertId" value="#{certHolder.accountOwner.itemIdInfo.insurerId}" />
                               <f:param name="accNumberId" value="#{certHolder.accountNumberId}"/>
                            </p:commandLink>