MyFaces перестал работать правильно
Я занимаюсь разработкой веб-приложения JSF с использованием Netbeans 7.3.1, работающего на Apache TomEE 1.5.2, который включает MyFaces 2.1.10, и я дополнительно использую PrimeFaces 3.5 для некоторых необычных тегов.
Должно быть, я где-то что-то сломал, потому что до вчерашнего дня все шло нормально, а сегодня, когда я пытался развернуть свое приложение, оно не отображалось <h:outputText />
при правильном отображении всех тегов Primefaces. <h:form>
тег также отображается.
ОБНОВЛЕНИЕ: также <h:inputText/>
отображается правильно, но value
Атрибут игнорируется там, как в <h:outputText/>
,
Более того, до вчерашнего дня мои управляемые бобы работали без implements Serializable
декларацию, а сегодня я получаю исключение, если не добавлю его.
Я проверил эти ответы, но ни один из них, похоже, не подходит для моей ситуации: теги JSF не отображаются, теги JSF не отображаются как HTML, теги JSF не отображают теги JSF не отображаются - возможно, FacesServlet не работает?, В частности, в этих случаях проблема заключалась в том, что страницы не были проанализированы вообще, но в моем случае страница была проанализирована частично.
Я подготовил небольшой тестовый пример внутри своего приложения, чтобы показать это поведение. Это мое faces-config.xml
:
<?xml version="1.0"?>
<faces-config 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-facesconfig_2_0.xsd"
version="2.0">
</faces-config>
И мой web.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<description>Pannello di amministrazione di FiatLux</description>
<display-name>Pannello Amministrazione FiatLux</display-name>
<distributable/>
<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>*.jsf</url-pattern>
</servlet-mapping>
<servlet>
<description>Default servlet</description>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsf</welcome-file>
</welcome-file-list>
</web-app>
Это пример страницы example.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:p="http://primefaces.org/ui">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form id="form">
<h:outputText value="Example value text" />
<h:outputText>Text between opening and closing tags</h:outputText>
<p:pickList id="outPickList"
value="#{exampleBean.data}"
var="obj"
itemLabel="#{obj}"
itemValue="#{obj}">
</p:pickList>
<p:commandButton ajax="false" action="#{exampleBean.updateAction}" value="Submit"/>
</h:form>
</h:body>
</html>
Это боб, ExampleBean.java
:
package com.ipssconsulting.fl.admininterface.presentation;
import java.io.Serializable;
import java.util.Arrays;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.apache.log4j.Logger;
import org.primefaces.model.DualListModel;
@SessionScoped
@ManagedBean(name = "exampleBean")
public class ExampleBean implements Serializable {
private static final long serialVersionUID = 89900876464743497L;
private static final Logger logger = Logger.getLogger(ExampleBean.class);
private DualListModel<String> data;
@PostConstruct
public void initialize() {
String[] initData = {
"Primo", "Secondo", "Terzo"
};
data = new DualListModel();
data.setSource(Arrays.asList(initData));
}
/**
* @return the data
*/
public DualListModel<String> getData() {
return data;
}
public void updateAction() {
logger.info("Clicked");
}
/**
* @param data the data to set
*/
public void setData(DualListModel<String> data) {
this.data = data;
}
}
Я подготовил скриншот с результатами.
Список выбора PrimeFaces работает правильно, текст между <h:outputText>
[...]</h:outputText>
Я считаю, потому что теги просто удаляются, но тот, который использует value
атрибута нет. Подобное поведение происходит на всех других страницах моего приложения.
Что я сделал, что могло привести к такому поведению? Что может быть причиной?