Java 导航后未呈现JSF标记
实际上,我正在尝试使用JSF开发一个web应用程序,但我对web浏览器中的渲染有一些问题 以下是上下文: 我有一个index.xhtml页面,可以正确显示JSF标记,我想通过一个简单的超链接导航到另一个页面Java 导航后未呈现JSF标记,java,jsf,tags,navigation,Java,Jsf,Tags,Navigation,实际上,我正在尝试使用JSF开发一个web应用程序,但我对web浏览器中的渲染有一些问题 以下是上下文: 我有一个index.xhtml页面,可以正确显示JSF标记,我想通过一个简单的超链接导航到另一个页面 <h:outputLink value="/Advisor/AddClient.xhtml"> <h:outputText value="Add a client" /> </h:outputLink> 但是,AddClient页
<h:outputLink value="/Advisor/AddClient.xhtml">
<h:outputText value="Add a client" /> </h:outputLink>
但是,AddClient页面并没有显示JSF标记的结果
以下是addclient文件:
<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:c="http://java.sun.com/jsp/jstl/core">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<h:body>
<ui:composition template="template.xhtml">
<script type="text/javascript">
<!-- a validation script used in py page -->
</script>
<h:panelGroup layout="block" rendered="#{loginBean.isLogged}">
<h:form id="formu" onsubmit="return validation()">
<table>
<tr>
<td>
First name :
</td>
<td>
<h:inputText id="txtFName" value="#{clientCreationBean.fname}"/>
</td>
</tr>
<tr>
<td>
Last name :
</td>
<td>
<h:inputText id="txtLName" value="#{clientCreationBean.lname}"/>
</td>
</tr>
<tr>
<td>
E-Mail :
</td>
<td>
<h:inputText id="txtEmail" value="#{clientCreationBean.email}"/>
</td>
</tr>
<tr>
<td>
Address :
</td>
<td>
<h:inputText id="txtAddress" value="#{clientCreationBean.address}"/>
</td>
</tr>
<tr>
<td>
Zip code :
</td>
<td>
<h:inputText id="txtZip" value="#{clientCreationBean.zip}"/>
</td>
</tr>
<tr>
<td>
City :
</td>
<td>
<h:inputText id="txtCity" value="#{clientCreationBean.city}"/>
</td>
</tr>
<tr>
<td>
Phone :
</td>
<td>
<h:inputText id="txtPhone" value="#{clientCreationBean.phone}"/>
</td>
</tr>
</table>
<h:commandButton action="#{clientCreationBean.CreateClient()}" value="Ajouter"/>
</h:form>
</h:panelGroup>
</ui:composition>
</h:body>
</html>
名字:
姓氏:
电邮:
地址:
邮政编码:
城市:
电话:
这是我的web.xml:
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</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>
javax.faces.PROJECT_阶段
发展
javax.faces.DEFAULT_后缀
.xhtml
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
/面孔/*
30
faces/index.xhtml
知道为什么JSF没有在我的其他页面中解释吗
更新:
我让AddClient这样工作:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Facesservlet
*.xhtml
将AddClient.xhtml移动到与Index.xhtml相同的文件夹(不再位于“Advisor”文件夹中),并将我的链接更改为:
<h:outputLink value="AddClient.xhtml">
<h:outputText value="Ajouter un client" />
</h:outputLink>
但是,当我让Advisor文件夹中的页面在/Advisor/AddClient.xhtml上显示链接时,它就不起作用了。为什么?
谢谢
KiTe您的链接与faces servlet映射不匹配:
<h:outputLink value="/Advisor/AddClient.xhtml">
这就是为什么FacesServlet不会被调用,JSF标记也不会被处理的原因
您可以将链接更改为:
<h:outputLink value="/faces/Advisor/AddClient.xhtml">
或者最好在web.xml中使用.xhtml后缀映射到:
Facesservlet
*.xhtml
您的链接与faces servlet映射不匹配:
<h:outputLink value="/Advisor/AddClient.xhtml">
这就是为什么FacesServlet不会被调用,JSF标记也不会被处理的原因
您可以将链接更改为:
<h:outputLink value="/faces/Advisor/AddClient.xhtml">
或者最好在web.xml中使用.xhtml后缀映射到:
Facesservlet
*.xhtml
请显示您的添加客户端文件更新:)整个html代码都可以在浏览器中获得,但jsf标记无法解释。首先,我想建议您,既然您正在使用jsf,那么为什么您仍然生活在d旧世界中,使用tr
和td
创建表,你可以使用内置标签来显示一个使用JSF的表。我正在从一个旧版本升级到一个JSF版本,计划这样做。但是,首先对其进行解释似乎是一个很好的起点^^@KiTe:您的第一个问题是FacesServlet映射中的url模式,正如MattHandy在回答中提到的那样。之后,您将在“添加客户端”页面中使用模板。在使用模板时,您必须在页面上使用ui:define标记,但在任何地方都没有使用它。我认为您需要解决这两个问题请显示您的添加客户端文件更新:)整个html代码都可以在浏览器中获得,但jsf标记没有被解释。首先,我想建议您,既然您使用jsf,那么为什么您仍然生活在d旧世界中,使用tr
和td
创建表,你可以使用内置标签来显示一个使用JSF的表。我正在从一个旧版本升级到一个JSF版本,计划这样做。但是,首先对其进行解释似乎是一个很好的起点^^@KiTe:您的第一个问题是FacesServlet映射中的url模式,正如MattHandy在回答中提到的那样。之后,您将在“添加客户端”页面中使用模板。在使用模板时,您必须在页面上使用ui:define标记,但在任何地方都没有使用它。我认为您需要解决这两个问题我在这里发布之前已经尝试了这两个问题,但第一个问题不起作用我得到一个404异常,第二个是“java.io.FileNotFoundException”或“/Advisor/faces/AddClient.xhtml未作为资源在ExternalContext中找到”取决于我在链接中的内容是Advisor
context根目录还是网页目录中的文件夹?好的,我的坏消息。更改了/faces/*
映射的输出链接value=“/faces/Advisor/AddClient.xhtml”
。我仍然得到一个404或java.IO.exception。。有点奇怪。现在,我将继续使用上次编辑中所做的修改,因为它似乎有效。我会尽力的