Я использую 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
5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 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>
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><!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>
мой довольно-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
Как я уже сказал, это тривиальное веб-приложение, просто чтобы посмотреть, как оно работает. Пожалуйста, помогите мне понять, почему у меня трудности...