当一些文件在子文件夹中时,我对如何在Java Server Faces项目中的文件之间进行链接感到困惑.(我打算附上截图,以便您可以看到Nebeans项目视图,以及我正在尝试的示例的文件视图......但我还不允许添加图像).
我的示例项目我有"index.xhtml"和"calculate/calculate.xhtml"文件.我还有一个名为"template.xhtml"的文件,两者都使用.问题是在模板中使用哪种url格式将适用于这两个文件.
在直接的HTML中我会使用类似下面的内容来提供一个返回主页的链接,该链接可以在任何位置工作:
<a href="/index.html">Home</a>
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚什么算作JSF应用程序的根文件夹,以及是否使用"项目视图"文件夹结构或"文件列表"文件夹结构.
我一直在阅读一些关于javax.faces.default_suffix的帖子,但在尝试实现它时没有成功.
使用:jsf 2.0,jboss 7.1,Mojarra 2.1.5
web.xml中
<welcome-file-list>
<welcome-file>/comum/inicio/index.xhtml</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern> **have tried *.jsf but with no success**
</servlet-mapping>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jsf</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
你能帮我解决这个问题吗?谢谢
我正在探索JSF 2.2中的新功能(到目前为止非常酷),但我仍然不明白受保护的视图是如何工作的,我创建了一个带有facelet2链接的facelet1,如下所示:
<h:link styleClass="link" value="Go to protected page" id="link1"
outcome="/protected/facelet2.xhtml"></h:link>
Run Code Online (Sandbox Code Playgroud)
在我的faces-config.xml中我添加了这个:
<protected-views>
<url-pattern>/protected/facelet2.xhtml</url-pattern>
</protected-views>
Run Code Online (Sandbox Code Playgroud)
现在,当我运行页面时,在URL中添加了一个标记:
http://localhost:8080/<project>/protected/facelet2.faces?javax.faces.Token=1426608965211
Run Code Online (Sandbox Code Playgroud)
根据文档,如果令牌与服务器中的令牌不匹配,则不处理GET请求(我的理解是否正确?).
但是,如果我修改令牌(使用Firebug或浏览器中包含的开发工具),即使令牌已被修改,仍会处理请求.
难道我做错了什么?
我试图让JSF设置使用具有html扩展名的文件.
如果我使用.xhtml模式(<url-pattern>*.xhtml</url-pattern>)并使用xhtml扩展名命名我的文件,那么页面会正确加载并进行解析.
但是,如果我将其更改为<url-pattern>*.html</url-pattern>并使用.html扩展名命名文件,则会出现500错误:
The server encountered an internal error () that prevented it from fulfilling this request.
Exception: java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)
服务器日志:
WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
at com.sun.faces.context.flash.ELFlash.getPhaseMapForReading(ELFlash.java:748)
at com.sun.faces.context.flash.ELFlash.isEmpty(ELFlash.java:466)
at com.sun.faces.facelets.util.DevTools.writeVariables(DevTools.java:318)
at com.sun.faces.facelets.util.DevTools.writeVariables(DevTools.java:208)
at com.sun.faces.facelets.util.DevTools.debugHtml(DevTools.java:123)
at com.sun.faces.renderkit.RenderKitUtils.renderHtmlErrorPage(RenderKitUtils.java:1139)
at com.sun.faces.context.ExceptionHandlerImpl.throwIt(ExceptionHandlerImpl.java:249)
at com.sun.faces.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:136)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791) …Run Code Online (Sandbox Code Playgroud) 我在JSF页面之间导航时遇到问题.单击命令按钮时,大多数导航都会发生.命令按钮的操作返回一个字符串.
我的登录页面是我的欢迎页面.这是在我的web.xml中:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>faces/pages/index.xhtml</welcome-file>
</welcome-file-list>
Run Code Online (Sandbox Code Playgroud)
在我浏览器的地址栏中,该页面显示为:
http://localhost:8080/ui/faces/pages/index.xhtml
Run Code Online (Sandbox Code Playgroud)
一旦身份验证发生,该函数返回此字符串:
"/ui/faces/pages/home.xhtml"
Run Code Online (Sandbox Code Playgroud)
我要导航到的文件位于:
pages/home.xhtml
Run Code Online (Sandbox Code Playgroud)
但是当导航应该发生时,我收到此错误:
无法找到与from-view-id'/pages/index.xhtml'匹配的导航案例,用于行动'#{indexPageController.login()}'与结果'/ui/faces/pages/home.xhtml'
任何人都可以帮助我理解正确导航到页面所需的相对路径吗?
我有一个空白页,当我尝试打开我的网页的http://本地主机:8084/GPSI-工作/ admin.xhtml但是当我尝试这样的http://本地主机:8084/GPSI-工作/面/ admin.xhtml那工作在哪里是问题,我在我的项目中使用模板.
我一直在努力保护我的项目.我有一个登录页面,使用LDAP服务器进行身份验证,如果不正确,则会启动错误页面等.我现在刚刚添加了
<auth-constraint> <!-- Currently causing a 403, looks like stoping .css files -->
<role-name>*</role-name>
</auth-constraint>
Run Code Online (Sandbox Code Playgroud)
到我的web.xml,以确保用户在查看任何页面之前都经过身份验证,但是它似乎阻止了我的.css文件,我想现在登录页面根本没有显示任何css,只是白色基本的,当我按提交时,我得到:
有这个错误:
HTTP状态403 - 拒绝访问所请求的资源
类型状态报告
消息已拒绝访问所请求的资源
说明已禁止访问指定的资源(已拒绝访问所请求的资源).
GlassFish Server开源版3.1.2.2
这是我的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>Upload Filter</filter-name>
<filter-class>richard.fileupload.UploadFilter</filter-class>
<init-param>
<param-name>sizeThreshold</param-name>
<param-value>1024</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Upload Filter</filter-name>
<url-pattern>/upload/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>facelets.LIBRARIES</param-name> …Run Code Online (Sandbox Code Playgroud) 在花了一些时间用于servlet和JSP之后,我正在尝试学习一些关于JSF的东西.我已经学习了基础知识,做了几个简单的例子,有一个基本的"工作流程"概念,但我仍然无法理解javax.faces.webapp.FacesServlet的用途.
<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>*.jsf</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
我知道"Faces Servlet"它只是一个"内部"名称,仅用于XML并且它与一个类绑定,在这种情况下:javax.faces.webapp.FacesServlet.但是这个班级到底在哪里?!我正在使用Eclipse,创建了一个新的动态项目,GlassFish 4.0作为服务器,JSF 2.0作为配置(选择了没有库),我也没有导入任何jar.它怎么样?当我尝试用JBoss运行相同的东西时,我必须导入一个javax.faces-2.2.2.jar文件.
好吧,该库可能已经包含在GlassFish中,因为它可以工作但是......如果我尝试在另一台服务器上部署我的应用程序,我会遇到任何问题吗?像JBoss或Websphere.
简而言之:使用JSF技术时的先决条件是什么:)
谢谢.
一旦我尝试通过"http://localhost:8080/beginner/faces/index.jsf"打开我的index.xhtml,我将得到以下异常:
javax.servlet.ServletException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
java.lang.NullPointerException
com.sun.faces.renderkit.RenderKitImpl.createResponseWriter(RenderKitImpl.java:228)
com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:214)
com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
note The full stack trace of the root cause is available in the JBoss Web/7.0.13.Final logs.
Run Code Online (Sandbox Code Playgroud)
在eclipse中,我通过"新Maven项目向导"创建了一个Maven项目并选择了Group Id:"org.jboss.spec.archetypes",Artifact Id"jboss-javaee6-webapp-blank-archetype"version:7.13我正在使用JBoss 7.1.1.FINAL并尝试了JDK 6和JDK7
index.xthml看起来像这样:
<?xml version="1.0" encoding= "UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>First JSF</title>
</h:head>
<h:body>
<h1>Hello there</h1>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
我找了几个小时是有原因的,但是找不到任何解决方案,尽管我做了这个研讨会书告诉我要做的每一步.