2014-02-03 2 views
2

Я пытаюсь использовать интерфейсную структуру primefaces для упрощения моего кода. Я следил за примером в руководстве пользователя perffaces 4.0, и он не работает.Диалоговое окно с интерфейсами с использованием рамки диалога не отображается

Я скопировал пример довольно много дословного создания трех файлов: файла с диалогом в нем, файла, который вызывает диалог и файл бэканга.

Диалог файл с именем "dialog.xhtml", находится в папке "/ Test" и содержит:

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:p="http://primefaces.org/ui"> 
    <h:head> 
     <title>Cars</title> 
    </h:head> 
    <h:body> 
     Test dialog 
    </h:body> 
</html> 

Базовый файл с именем "testDialog.xhtml", находится в «/ Test "папка и содержит:

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

    <h:head> 
     <title>Test Dialog</title> 
     <meta name="viewport" content="width=device-width"/> 
    </h:head> 
    <h:body> 
     <h:form> 
     <p:commandButton value="View Cars" actionListener="#{hostBean.view}" /> 
     </h:form> 
    </h:body> 
</html> 

Наконец, поддержка боб содержит:

@ManagedBean 
@SessionScoped 
public class HostBean implements Serializable { 

    public void view() { 
     RequestContext.getCurrentInstance().openDialog("/Test/dialog"); 
    } 
} 

Когда я его отладки, вид вызывается, но диалог не открывается. (Я добавил три строки в face-context.)

Любые идеи?

+0

Я не»видеть диалоговый код в любом из вашего публикуемой Xhtml файла. – Makky

+0

Из моего прочтения руководства пользователя это точка рамки диалога. Вы можете открыть любой файл xhtml в диалоговом окне, используя фреймворк, просто указав его имя. – wjr

+0

см. Этот документ http://www.primefaces.org/showcase/ui/dialogHome.jsf – Makky

ответ

8

Я сделал это работать с этим кодом:

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

@ManagedBean 
@ViewScoped 
public class HostBean implements Serializable { 

    public void view() { 
     RequestContext.getCurrentInstance().openDialog("dialog"); 
    } 
} 

Поскольку оба XHTML файлы находятся в одной папке (Test), вам не нужно использовать «/ Test/диалог» (вы можете сделать его более «глобальный», если вы используете весь путь, хотя).

Не забудьте добавить это ваши лица-config.xml:

<?xml version='1.0' encoding='UTF-8'?> 
<faces-config version="2.2" 
       xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"> 

    <application> 
     <action-listener>org.primefaces.application.DialogActionListener</action-listener> 
     <navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler> 
     <view-handler>org.primefaces.application.DialogViewHandler</view-handler> 
    </application> 

</faces-config> 
+0

Я замечаю, что вы используете версию 2.2. В моем файле конфигурации он отображается как 2.1. В сыром действии я просто скопировал ваш заголовок в свой файл, тем самым продемонстрировав значение опции «revert changes» subversion. Итак, вы знаете, зависит ли эта функция от 2.2? – wjr

+0

Я считаю, что он отлично работает на 2.1. Часть - это то, что действительно важно. Проводили ли вы какое-то испытание, только эта часть? –

+0

Нет, я набрал это вручную, так как руководство пользователя является pdf и не настроено для копирования. Я попробую просто скопировать эту часть, хотя считаю, что это правильно. – wjr

1

Вы должны добавить в заголовок вашей страницы следующую строку:

<h:outputScript name="jquery/jquery-plugins.js" library="primefaces"/> 

Не беспокоиться - не копируйте файлы в свой проект - выше строки достаточно, потому что PrimeFaces автоматически добавляет js-файл.

Как вы поняли, вы должны также добавить несколько строк в файл лицо-config.xml:

<application> 
    <action-listener>org.primefaces.application.DialogActionListener</action-listener> 
    <navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler> 
    <view-handler>org.primefaces.application.DialogViewHandler</view-handler> 
</application> 
Смежные вопросы