красивые лица jsf стеклянная рыбка у меня не работает

Я использую GlassFishV3, JSF2, красивые лица 3

Я пробовал много комбинаций, чтобы избавиться от моего расширения *.xhtml или приукрасить мой URL, но мне это не удалось.

Пожалуйста, если вы знаете другое решение, дайте мне ПРИМЕР того, как это сделать, или если мое решение правдоподобно, скажите мне, что я ошибся:

Я следовал руководству на http://ocpsoft.org/prettyfaces/ и создал простое приложение всего с одним индексом. .xhtml, и я поместил ссылку на home.xhtml (оба находятся в WebContent).

  • У меня есть банка (я не использую Maven), и я помещаю ее в WEB-INF/lib
  • согласно руководству мне не нужно менять файл web.xml, потому что при использовании GlassFishv3
  • мой веб.xml

    <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app
    <pretty-config xmlns="http://ocpsoft.com/prettyfaces/3.3.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://ocpsoft.com/prettyfaces/3.3.3 
    http://ocpsoft.com/xml/ns/prettyfaces/ocpsoft-pretty-faces-3.3.3.xsd ">
    
    <url-mapping id="home">
        <pattern value="/home" />
        <view-id value="/home.xhtml"/>
    </url-mapping> </pretty-config>
    
    5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app
    <!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:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"><ui:composition template="">
    <ui:define name="header">
        Add your header here or delete to use the default
    </ui:define>
    <ui:define name="content">
       <a id="home" href="home.xhtml">Home</a>
    </ui:define>
    <ui:define name="footer">
        Add your footer here or delete to use the default
    </ui:define></ui:composition>
    
    0.xsd" id="WebApp_ID" version="3.0"> <display-name>extension</display-name> <welcome-file-list> <welcome-file>index.xhtml</welcome-file> </welcome-file-list> <context-param> <param-name>com.ocpsoft.pretty.DEVELOPMENT</param-name> <param-value>true</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping></web-app>
  • мой довольно-config.xml

    <pretty-config xmlns="http://ocpsoft.com/prettyfaces/3.3.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://ocpsoft.com/prettyfaces/3.3.3 
    http://ocpsoft.com/xml/ns/prettyfaces/ocpsoft-pretty-faces-3.3.3.xsd ">
    
    <url-mapping id="home">
        <pattern value="/home" />
        <view-id value="/home.xhtml"/>
    </url-mapping> </pretty-config>
    
    • with this configuration I keep getting java.lang.StackOverflowError (with others or my app doesn`t compile or I get a different error) the loop is

    на com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308) на com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367) на com.sun.faces.facelets .impl.DefaultFacelet.include(DefaultFacelet.java:346) в com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) в com.sun.faces.facelets.tag.ui.CompositionHandler.apply (CompositionHandler.java:155) в com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) в com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)

    • мой index.xhtml работает, но когда я нажимаю на ссылку, появляется ошибка выше
    • У меня нет bean-компонентов (другой вопрос, нужно ли мне добавлять какие-либо аннотации к сопоставленным bean-компонентам, если мне удастся получить красивые лица)

    Спасибо вам большое за ваше время!

Модификации:

  • Я сделал тривиальное веб-приложение, чтобы увидеть, как работает скрытие расширения. index.xhtml

    <!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:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"><ui:composition template="">
    <ui:define name="header">
        Add your header here or delete to use the default
    </ui:define>
    <ui:define name="content">
       <a id="home" href="home.xhtml">Home</a>
    </ui:define>
    <ui:define name="footer">
        Add your footer here or delete to use the default
    </ui:define></ui:composition>
    

and the home.xhtml

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

<ui:composition template="">
    <ui:define name="header">
        Add your header here or delete to use the default
    </ui:define>
    <ui:define name="content">
        home#######
    </ui:define>
    <ui:define name="footer">
        Add your footer here or delete to use the default
    </ui:define>
</ui:composition>
</html>

теперь, если я запускаю приложение 127.0.01:8080/myapp, сразу возникает ошибка java.lang.StackOverflowError

но если я просто вставлю index.xhtml

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

<h:body>
       <a id="home" href="home.xhtml">Home</a>
</h:body>
</html>

и в home.xhtml

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

<h:body>
HOME
</h:body>
</html>

это работает, но расширение запущено с 127.0.0.1:8080/myapp/, а затем нажмите на ссылку и 127.0.0.1:8080/myapp/home.xhtml

Я хочу сделать это как первый индекс и дома с шаблоном, потому что я работаю над веб-приложением, в котором уже есть шаблоны. id="home" в теге "a href", который я не использовал в CSS для его форматирования, но я впадаю в отчаяние :))

Любая помощь будет оценена по достоинству. Спасибо!

### MODIFICATIONS
  • поэтому я снова начал с тривиального веб-приложения, чтобы увидеть, как работают красивые лица
  • теперь я неt get any errors but I still canне меняю свой URL
  • что я сделал до сих пор:

  • Я поместил pretty-faces-jsf-3.3.3.jar в WEB-INF/lib

  • Я вставил WEB-INF pretty-config.xml

    <?xml version="1.0" encoding="UTF-8"?><pretty-config xmlns="http://ocpsoft.com/prettyfaces/3.3.3" 
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xsi:schemaLocation="http://ocpsoft.com/prettyfaces/3.3.3
                                        http://ocpsoft.com/xml/ns/prettyfaces/ocpsoft-pretty-faces-3.3.3.xsd">
    
    <url-mapping id="home">
        <pattern value="/home" />
        <view-id value="/home.xhtml" />
    </url-mapping>
    

  • my web.xml

    <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>test</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <context-param>
        <param-name>com.ocpsoft.pretty.DEVELOPMENT</param-name>
        <param-value>true</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping></web-app>
    
  • в WEB-INF у меня есть index.html, home.xhtml и template.xhtml

index.html

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

<h:body>
    <a href="home.xhtml">HOME</a>
</h:body>
</html>

home.xhtml

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

<ui:composition template="/tempate.xhtml">
    <ui:define name="header">
        Add your header here or delete to use the default
    </ui:define>
    <ui:define name="content">
     ########################
    </ui:define>
    <ui:define name="footer">
        Add your footer here or delete to use the default
    </ui:define>
</ui:composition>
</html>

шаблон.xhtml

    <!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:ui="http://java.sun.com/jsf/facelets">
<head>
  <title><ui:insert name="title">Default title</ui:insert></title>
</head>

<body>

<div id="header">
    <ui:insert name="header">
        Header area.  See comments below this line in the source.
        <!--  include your header file or uncomment the include below and create header.xhtml in this directory -->
        <!-- <ui:include src="header.xhtml"/> -->
    </ui:insert>
</div>


<div id="content">
  <ui:insert name="content">

                <ui:include src="home.xhtml" />

  </ui:insert>
</div>

<div id="footer">
  <ui:insert name="footer">
        Footer area.  See comments below this line in the source.
        <!--  include your header file or uncomment the include below and create footer.xhtml in this directory -->
        <!--<ui:include src="footer.xhtml"/>  -->
  </ui:insert> </div> </body></html>

Я не изменил свой web.xml с помощью

    <web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5"><filter>
      <filter-name>Pretty Filter</filter-name>
      <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
      <async-supported>true</async-supported>
   </filter>

   <filter-mapping> 
      <filter-name>Pretty Filter</filter-name> 
      <url-pattern>/*</url-pattern> 
      <dispatcher>FORWARD</dispatcher> 
      <dispatcher>REQUEST</dispatcher> 
      <dispatcher>ERROR</dispatcher>
      <dispatcher>ASYNC</dispatcher>
   </filter-mapping></web-app>

потому что я использую Glassfishv3

Как я уже сказал, это тривиальное веб-приложение, просто чтобы посмотреть, как оно работает. Пожалуйста, помогите мне понять, почему у меня трудности...


person CyberGriZzly    schedule 23.11.2012    source источник
comment
Не могли бы вы поделиться файлом xhtml?   -  person chkal    schedule 24.11.2012
comment
Я отредактировал свой исходный вопрос.   -  person CyberGriZzly    schedule 24.11.2012
comment
Каковы основные шаги по настройке красивых лиц? Я делаю что-то определенно не так... Куда бы я ни посмотрел, везде написано, что это очень просто...   -  person CyberGriZzly    schedule 24.11.2012
comment
Это очень просто и описано в документации. Для начала вы можете взглянуть на архетипы Maven: github.com/chkal/prettyfaces- архетипы/вики   -  person chkal    schedule 27.11.2012
comment
С последней модификацией вы должны увидеть домашнюю страницу, если вы введете localhost:8080/myapp/home в своем браузер. Ваш вопрос довольно запутан со всеми разделами модификации. Если это не работает, отправьте сообщение на ocpsoft.org/support и прикрепите пример приложения. Я уверен, что мы сможем помочь вам там.   -  person chkal    schedule 01.12.2012


Ответы (1)


Я не думаю, что эта проблема имеет какое-либо отношение к PrettyFaces. Трассировка стека показывает только некоторые вещи, связанные с Facelets:

at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308)
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346) 
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) 
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155) 
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)

Я видел, что вы используете пустой атрибут template:

<ui:composition template="">

Ваша страница не будет работать без ссылки на базовый шаблон. Я думаю, что это может вызвать ошибку, которую вы получаете.

Кстати: вы можете протестировать PrettyFaces без использования шаблонов Facelets. PrettyFaces ничего не знает о шаблонах. Так что, если он работает без шаблонов, он будет работать и с шаблонами. :)

person chkal    schedule 25.11.2012
comment
Какие-нибудь Новости? Если это по-прежнему не работает, напишите об этом на форумах PrettyFaces. Я уверен, что мы сможем вам помочь, если вы загрузите свой пример приложения. ocpsoft.org/support - person chkal; 27.11.2012
comment
Я искренне извиняюсь за неудобства, но кто бы ни дал мне ответ, который начинается с Вы можете попробовать следующее: Ссылку из index.xhtml нужно переписать в довольно-конфиге, я могуt see your answer anywhere, Iполучить электронное письмо, в котором говорится, что яve got an answer for my question on Nov 29. The email is as follows: The following items were added to your Stack Exchange global inbox since you last checked it on 2012-11-15: Nov, 29 pretty faces jsf glassfish doesnне работаю для меня ответ: Можно попробовать следующее: Ссылку из index.xhtml нужно переписать в pretty-config.... - person CyberGriZzly; 30.11.2012