0

Primefacesダイアログ フレームワークに関するさらに別の投稿。

私はこれらの以前の投稿をすべて見てきました:

Primefaces ダイアログ フレームワーク - 動作しない

ダイアログフレームワークを使用したprimefacesダイアログがポップアップしない

ajaxリスナーの使用中にPrimefacesダイアログフレームワークが機能しない

これらすべてを試してみましたが、それでもダイアログが表示されません.\

を使用して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 は ActionEvent パラメータのみを受け入れるため、actionListener の引数を介してパラメータを渡すことはできません。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);
    }
}

codeice-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 に答える