【问题标题】:Page jsf into dialog not working页面jsf进入对话框不起作用
【发布时间】:2013-05-16 07:39:26
【问题描述】:

我尝试从 primefaces 站点中获取示例。使用 Dialog Framework - Basic

    <p:commandButton value="Options" icon="ui-icon-extlink" action="#{dialogBean.viewCarsCustomized}" />

Bean DialogBean

公共类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' 倾倒 l'action '#{parserXls.viewComposant()}' 查看结果 '对话框:/pagess/pagesComposant/AjoutC.jsf?modal=true'。

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

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

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

【问题讨论】:

  • 您使用的是哪个 PF 版本?它与展示页面的页脚中提到的相同吗? dialog: 导航结果前缀是自 4.0 以来的新前缀(目前仍处于测试阶段)。
  • primefaces 3.5 版本

标签: jsf jsf-2 primefaces


【解决方案1】:

primefaces 3.5 版本

"Dialog Framework" 中的 dialog: 导航结果前缀是在 PrimeFaces 4.0 中引入的,在旧版本中不起作用。

所以,你有两个选择:

  1. 升级到 PrimeFaces 4.0(注意:目前仍处于测试阶段)
  2. 在 JavaScript 中使用 dialogWidgetVar.show() 或在 JSF 中使用 visible="#{someCondition} 的“旧”方法。另见the &lt;p:dialog&gt; examples in PrimeFaces showcase

更新:根据评论,您可以在 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;
}

如有必要,您可以将&lt;p:dialog&gt; 移动到您包含在&lt;ui:include&gt; 的包含文件中。

【讨论】:

  • 你有没有让 dialogWidgetVar.show() 工作的例子。提前谢谢你
  • 我不明白。我应该在哪里设置 visisble="#"。我有一个页面,我想把它显示到对话框中,你能解释一下吗
  • 你是最棒的谢谢 Mr@BalusC
  • 还有一个问题。是先创建展位 cas 的对话框。还是先创建测试然后创建对话框
  • 默认情况下,它已经创建。如果您想推迟到开幕式,请使用dynamic="true"。另请参阅文档。对于与当前问题无关的未来问题,请按 按钮(或只是做一些基础研究;文档是您的朋友)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多