Страница JSF xhtml не найдена - PullRequest
0 голосов
/ 06 января 2019

Я пытался следить за различными статьями по настройке моего первого приложения JSF и не могу найти мою первую страницу HTML. Я продолжаю получать сообщение об ошибке «Это приложение не имеет явного сопоставления для / error, поэтому вы видите это как запасной вариант» в браузере.

В браузере я набираю http://localhost:8080/modelSimulation.xhtml, чтобы получить эту ошибку, и в консоли я вижу: ...: GET "/modelSimulation.xhtml", параметры = {} ...: нет сопоставления для GET /modelSimulation.xhtml

Мое приложение весенней загрузки добавило различные вещи, необходимые для настройки JSF с весенней загрузкой, но, очевидно, мне не хватает чего-то, чтобы можно было просматривать мою страницу modelSimulation.xhtml. Что мне не хватает? Спасибо!

Я также пытался http://localhost:8080, но также не получил соответствующей ошибки отображения.


SRC / главная / веб-приложение / WEB-INF / modelSimulation.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://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:p="http://primefaces.org/ui">
<ui:composition template="layout.xhtml">
    <ui:define name="content">
        <h:form id="mainForm">
            <p:panel header="Details">
                <h:panelGrid columns="1">
                    <p:outputLabel for="symbol" value="Symbol: " />
                    <p:inputText id="symbol" value="#{tradingModelSimulationController.symbol}" />
                    <p:outputLabel for="ranking" value="ranking: " />
                    <p:inputNumber id="ranking" value="#{tradingModelSimulationController.ranking}" />
                    <h:commandButton value="apply" action="#{tradingModelSimulationController.apply}" />
                </h:panelGrid>
            </p:panel>
        </h:form>
    </ui:define>
</ui:composition>
</html>

SRC / главная / веб-приложение / WEB-INF / web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="3.1">
    <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>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
</web-app>

Я добавил 2 обязательных компонента в класс SpringBootApplication :

@Bean
public ServletRegistrationBean servletRegistrationBean() {
    FacesServlet servlet = new FacesServlet();
    return new ServletRegistrationBean(servlet, "*.jsf");
}
@Bean
public FilterRegistrationBean rewriteFilter() {
    FilterRegistrationBean rwFilter = new FilterRegistrationBean(new RewriteFilter());
    rwFilter.setDispatcherTypes(EnumSet.of(DispatcherType.FORWARD, DispatcherType.REQUEST,
            DispatcherType.ASYNC, DispatcherType.ERROR));
    rwFilter.addUrlPatterns("/*");
    return rwFilter;
}

Вот боб (я не понимаю @Join ...)

@Scope(value = "session")
@Component(value = "tradingModelSimulationController")
@ELBeanName(value = "tradingModelSimulationController")
@Join(path = "/modelSimulation", to = "/modelSimulation.jsf")
public class TradingModelSimulationController {

    ModelSimulation modelSimulation = new ModelSimulation();

    String symbol;
    int ranking;

    public void apply() {

        System.out.println("Applied: " + modelSimulation.toString());

        RequestContext.getCurrentInstance()
            .execute("handleMsg('applied!');");
    }

    public ModelSimulation getModelSimulation() {
        return modelSimulation;
    }

    public String getSymbol() {
        return symbol;
    }

    public void setSymbol(String symbol) {
        this.symbol = symbol;
    }

    public int getRanking() {
        return ranking;
    }

    public void setRanking(int ranking) {
        this.ranking = ranking;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...