отображать диалог после обработки действия ссылки - PullRequest
2 голосов
/ 16 сентября 2011

У меня есть одна простейшая страница 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>

И когда я щелкнул ссылку истечения срока действия, он не открывает страницу диалога. Пожалуйста, посоветуйте мне .... :(

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Попробуйте использовать модель 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
}

Вам не хватает того, что вы не используете движок Primefaces ajax.На primefaces.org есть несколько хороших руководств, и форумы очень полезны.Другая вещь, которую вы должны знать, это действие, вероятно, не лучший способ справиться с отображением диалога.Вы ничего не можете сделать с ActionListener, и он даст вам очень хороший уровень контроля на странице.Затем вы можете использовать это действие, когда вам действительно нужно что-то подбросить для навигации.

Вот протестированный рабочий пример выше (Primefaces 2.2.1)

//Bean
@ViewScoped
@ManagedBean(name = "demoBean")
public class DemoBean
{
    private String hello = "Hello World";
    private String notSet = "not set";

    public void doAction(ActionEvent evt)
    {
        notSet = hello;
    }

    /**
     * @return the hello
     */
    public String getHello()
    {
        return hello;
    }

    /**
     * @return the notSet
     */
    public String getNotSet()
    {
        return notSet;
    }

    /**
     * @param hello
     *          the hello to set
     */
    public void setHello(String hello)
    {
        this.hello = hello;
    }

    /**
     * @param notSet
     *          the notSet to set
     */
    public void setNotSet(String notSet)
    {
        this.notSet = notSet;
    }
}

JSF Demo fileследующим образом:

<?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, вы напрямую вызываете метод show из Javascript, вы заметите, что этот код выполняет обновление, а затем вызывает метод.

0 голосов
/ 22 сентября 2011
    <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..Он отлично работает с кнопкой, а также может вызвать всплывающее окно при нажатии на эту ссылку. Но мы можем передать значения по этой ссылке. Когда мы пытаемся получить значение переменной certHoldertId с помощью FaceContext, оно дает нулевое значение. Я думаю, что оно возвращает ложное значение.

Как мы можем отправить эти значения по этой ссылке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...