页面jsf进入对话框无法正常工作

时间:2013-05-21 13:47:17

标签: jsf jsf-2 primefaces

我尝试使用对话框架 - 基本

从primefaces网站开始
    <p:commandButton value="Options" icon="ui-icon-extlink" action="#{dialogBean.viewCarsCustomized}" />

Bean DialogBean

public class DialogBean {

public String viewCarsCustomized() {  
    return "dialog:viewCars?modal=true";  
}  

}

viewCars.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"  
    xmlns:ui="http://java.sun.com/jsf/facelets"  
    xmlns:p="http://primefaces.org/ui">  

    <h:head>  

    </h:head>  

    <h:body>  
        <p:dataTable var="car" value="#{tableBean.carsSmall}">  
            <p:column headerText="Model">  
                <h:outputText value="#{car.model}" />  
            </p:column>  

            <p:column headerText="Year">  
                <h:outputText value="#{car.year}" />  
            </p:column>  

            <p:column headerText="Manufacturer">  
                <h:outputText value="#{car.manufacturer}" />  
            </p:column>  

            <p:column headerText="Color">  
                <h:outputText value="#{car.color}" />  
            </p:column>  
        </p:dataTable>  
    </h:body>  

</html> 

这是我在My Bean上的例子。 我试试这个

public String viewComposant(){
        return "dialog:AjoutC?modal=true"; 
    }

它不起作用,我尝试这样做。但每次都是错误

  

Impossible de trouver un cas de navigation相应的depuis l'ID   de vue'/ pagess/Parsing/ReacgModule.xhtml'pour l'action   '#{parserXls.viewComposant()}'aveclerésultat   '对话框:/pagess/pagesComposant/AjoutC.jsf模态=真'。

public String viewComposant(){
        return "dialog:/pagess/pagesComposant/AjoutC.jsf?modal=true"; 
    }

但是当我这样做时,页面会退回,但不是我喜欢

public String viewComposant(){
            return "/pagess/pagesComposant/AjoutC.jsf"; 
        }

1 个答案:

答案 0 :(得分:6)

  

3.5版本的primefaces

来自"Dialog Framework"dialog:导航结果前缀在PrimeFaces 4.0中引入,并且不适用于旧版本。

所以,你有两个选择:

  1. 升级到PrimeFaces 4.0(注意:它目前仍处于测试阶段)
  2. 使用&#34; old&#34; JavaScript中的dialogWidgetVar.show()或JSF中的visible="#{someCondition}的方法。另请参阅the <p:dialog> examples in PrimeFaces showcase

  3. 更新:根据评论,这里有如何在JS中使用widgetVar方法:

    <p:button value="Open dialog" onclick="w_dialog.show(); return false;" />
    <p:dialog widgetVar="w_dialog">
        <p>Dialog's content.</p>
    <p:dialog>
    

    以下是您在JSF中使用visible方法的方法:

    <h:form>
        <p:commandButton value="Open dialog" action="#{bean.showDialog}" update=":dialog" />
    </h:form>
    <p:dialog id="dialog" visible="#{bean.showDialog}">
        <p>Dialog's content.</p>
    <p:dialog>
    

    private boolean showDialog;
    
    public void showDialog() {
        showDialog = true;
    }
    
    public boolean isShowDialog() {
        return showDialog;
    }
    

    如有必要,您可以将<p:dialog>移至<ui:include>所包含的包含文件中。