0

还有一篇关于primefaces对话框架的文章。

我一直在看所有这些以前的帖子:

Primefaces 对话框架 - 不工作

使用对话框框架的primefaces对话框没有弹出

Primefaces 对话框框架在使用 ajax 侦听器时不起作用

我一直在尝试所有这些,但对话框仍然没有出现。\

我正在使用primefaces 5.1.

让我补充一些细节。

带有应调用对话框的按钮的页面:

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

  <h:form>
      <p:commandButton 
         value="prova popup" 
         actionListener="#{codTribEr.chooseCodiceErario('/popup/codice-erario.xhtml')}">
      </p:commandButton>
  </h:form>

</html>

Java代码:

package it.iwb.ubiss.poc.popup;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.context.RequestContext;

@ManagedBean(name="codTribEr")
@ViewScoped
public class CodiceTributoErario implements Serializable{

    private static final long serialVersionUID = 1L;

    public void chooseCodiceErario(String s) {
            RequestContext.getCurrentInstance().openDialog(s);
    }
}
4

1 回答 1

0

您使用了不正确的 JSF 结构。

  1. 您没有使用 JSF 标准标签(h:head, h:body)。
  2. 您不能通过 actionListener 的参数传递参数,因为 actionListener 只接受 ActionEvent 参数。如果你想通过actionListener传递参数,你可以通过f:attribute

示例代码如下所示。

xhtml

<?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:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>prova popup</title>
    </h:head>

    <h:body>
        <h:form>
            <p:commandButton value="prova popup" 
                             actionListener="#{codTribEr.chooseCodiceErario}"
                             >
                <f:attribute name="url" value="/popup/codice-erario.xhtml" />
            </p:commandButton>
        </h:form>
    </h:body>

</html>

托管豆

package it.iwb.ubiss.poc.popup;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import org.primefaces.context.RequestContext;

@ManagedBean(name = "codTribEr")
@ViewScoped
public class CodiceTributoErario implements Serializable {

    private static final long serialVersionUID = 1L;

    public void chooseCodiceErario(ActionEvent event) {
        String url = (String)event.getComponent().getAttributes().get("url");
        System.out.println(url);
        RequestContext.getCurrentInstance().openDialog(url);
    }
}

代码-erario.xhtml

<?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:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>codice-erario</title>
    </h:head>

    <h:body>
        Show codice-erario.xhtml
    </h:body>

</html>
于 2014-10-22T04:07:32.723 回答