У меня есть icefaces
приложение и проблема, с которой я столкнулся здесь, заключается в том, что facesServlet
вызывается не со страницы application.xhtml
, а когда я вызываю его со страницы test.xhtml
, эта страница отображается нормально, но в случае application.xhtml
отображается пустая страница, но при просмотре исходного кода вы можете увидеть файл.
application.xhtml Код
<?xml version="1.0" encoding="UTF-8"?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ice="http://www.icesoft.com/icefaces/component">
<h:head>
<title>Job Application</title>
<ice:outputStyle href="./xmlhttp/css/xp/xp.css" />
</h:head>
<h:body>
<ice:form partialSubmit="true">
<ice:messages globalOnly="true" />
<ice:panelGrid columns="3">
<ice:outputLabel for="firstName" value="#{msgs.firstName}:" />
<ice:inputText id="firstName" value="#{applicant.firstName}" required="true"/>
<ice:message for="firstName" />
<ice:outputLabel for="lastName" value="#{msgs.lastName}:" />
<ice:inputText id="lastName" required="true" value="#{applicant.lastName}" />
<ice:message for="lastName" />
<ice:outputLabel for="travelPercentage" value="#{msgs.travelPercentage}:" />
<ice:inputText id="travelPercentage" required="true" value="#{applicant.travelPercentage}">
<f:validateLongRange minimum="0" maximum="100" />
</ice:inputText>
<ice:message for="travelPercentage" />
<ice:outputLabel for="dateOfBirth" value="#{msgs.dateOfBirth}:" />
<ice:selectInputDate id="dateOfBirth" required="true" value="#{applicant.dateOfBirth}"
renderAsPopup="true">
<f:convertDateTime pattern="MM/dd/yyyy" />
</ice:selectInputDate>
<ice:message for="dateOfBirth" />
<ice:outputLabel for="city" value="#{msgs.city}" />
<ice:inputText id="city" required="true" value="#{applicant.city}"/>
<ice:message for="city" />
<ice:outputLabel for="provinceId" value="#{msgs.provinceId}" />
<ice:selectOneMenu id="provinceId"
required="true"
value="#{applicant.provinceId}">
<f:selectItem itemLabel="#{msgs.select}" itemValue="" />
<f:selectItems value="#{provinceSupport.selectItems}" />
</ice:selectOneMenu>
<ice:message for="provinceId" />
<ice:outputLabel for="postalCode" value="#{msgs.postalCode}" />
<ice:inputText id="postalCode"
required="true" value="#{applicant.postalCode}"/>
<ice:message for="postalCode" />
</ice:panelGrid>
<ice:panelGrid columns="1">
<ice:commandLink value="#{applicantForm.resumeRendered ? msgs.hideResume : msgs.showResume}"
actionListener="#{applicantForm.toggleResume}"
immediate="true"/>
<ice:inputTextarea id="resume" value="#{applicant.resume}" cols="40" rows="8"
rendered="#{applicantForm.resumeRendered}"/>
</ice:panelGrid>
<ice:commandButton value="#{msgs.submitApplication}" action="#{applicantForm.submit}"
partialSubmit="false"/>
</ice:form>
</h:body>
</html>
test.xhtml code
<?xml version="1.0" encoding="UTF-8"?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:ice="http://www.icesoft.com/icefaces/component">
<h:head><title>Thank You</title></h:head>
<h:body>
<ice:form>
<ice:outputText value="Thank you #{applicant.firstName} for applying" />
<br />
<ice:commandButton action="submitAnother" value="Submit Another" />
</ice:form>
</h:body>
</html>
Информация о сервлетах и сопоставлениях сервлетов:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Resource Servlet</servlet-name>
<url-pattern>/xmlhttp/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>Resource Servlet</servlet-name>
<servlet-class>com.icesoft.faces.webapp.CompatResourceServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
Не уверен, что является причиной проблемы, но application.xhtml
не достигает facesServlet
также, когда я сопоставляю facesServlet
как *.jsf
, тогда я не смог бы добраться до обеих страниц, но если я сделаю *.xhtml
тогда test.xhtml
страница будет отображаться facesServlet
, но application.xhtml
не будет отображаться, не зная, в чем здесь проблема.
Обновление
Я думаю, и не уверен, что здесь
<?xml version="1.0" encoding="UTF-8"?>
, может быть причиной проблемы, у меня есть test.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:h="http://java.sun.com/jsf/html"
xmlns:ice="http://www.icesoft.com/icefaces/component">
<h:head><title>Thank You</title></h:head>
<h:body>
<ice:form>
<ice:outputText value="Thank you #{applicant.firstName} for applying" />
<br />
<ice:commandButton action="submitAnother" value="Submit Another" />
</ice:form>
</h:body>
</html>
но когда я разверну его и нажму на эту страницу на browser
, ничего не появится, и если я нажму на просмотр исходного кода, у меня будет
<?xml version="1.0" encoding="UTF-8"?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:ice="http://www.icesoft.com/icefaces/component">
<h:head><title>Thank You</title></h:head>
<h:body>
<ice:form>
<ice:outputText value="Thank you #{applicant.firstName} for applying" />
<br />
<ice:commandButton action="submitAnother" value="Submit Another" />
</ice:form>
</h:body>
</html>
Я не уверен, может ли <?xml version="1.0" encoding="UTF-8"?>
вызвать проблему или нет, но просмотрите исходный текст того тега xml, в котором он отсутствует на исходной странице xhtml, также я проверил web.xml
файл, развернутый на сервере, и он делает правильно сопоставили facesServlet
, и у нас нет фильтра, который делает какие-то безумные вещи.