我有一个JSF项目,我已经有一个index.xhtml
页面正常工作。当我尝试添加另一个XHTML页面时,由于某种原因它没有连接到我的会话作用域托管bean。我在新页面中添加了代码,但它不像我的index.xhtml
那样工作。我甚至复制并粘贴了索引中的代码,但仍然无法正常工作。有什么想法吗?
以下是我在新页面中的一些代码:
Amount: <h:inputText value="#{transactionBean.amount}" style="color: Yellow; background: Teal;"/>
Price <h:inputText value="#{transactionBean.pricePaid}" style="color: Yellow; background: Teal;"/
这是我的web.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 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_3_0.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</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>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
</web-app>
答案 0 :(得分:1)
来自评论:
faces servlet不处理您的第二页。 faces servlet的url模式为/faces/*
。因此,所有请求必须包含前缀/faces
才能由servlet处理。
如果您使用以下网址调用您的网页,它应该有效:
http://localhost:8080/SharePortfolioJSF/faces/companies.xhtml
答案 1 :(得分:1)
您已在/faces/*
而不是*.xhtml
上映射了面部servlet。这意味着您需要在URL中包含/faces
路径以使face servlet运行。
因此,您不应该通过
打开页面,而不是
http://localhost:8080/SharePortfolioJSF/faces/companies.xhtml
然而,更好的方法是使用*.xhtml
作为faces servlet的URL模式,这样就不需要摆弄虚拟路径了。
<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>
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
(请注意,您的<session-timeout>
30分钟已经是默认值,只需删除它即可