当前位置: 首页 > 知识库问答 >
问题:

在Tomcat 7上进行第一次测试时,从Servlet blank调用了JSF页面

尉迟明贤
2023-03-14

尽管我爬过了这四个SO问题,但当我在servlet中创建的第一个JSF页面被调用时,我仍然只得到一个空白页面。它是通过IntelliJ IDEA部署在Tomcat 7服务器上的。在错误日志级别“all”上,我没有收到任何错误消息。浏览器中的源代码完全是空的。看起来FacesServlet没有被调用,但IMO它不可能是由于url映射,对我来说似乎没问题!??还有其他可能性吗,以及查看错误日志?

网状物xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <context-param>
        <param-name>incomingURLs</param-name>
        <param-value>http://localhost:8080,http://localhost:63342,https://localhost:63342</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.FACELETS_VIEW_MAPPINGS</param-name>
        <param-value>*.xhtml</param-value>
    </context-param>
    <servlet>
        <servlet-name>Diagapp</servlet-name>
        <servlet-class>com.brainsee.diagapp.DispatcherServlet</servlet-class>
        <multipart-config>
            <location>/tmp</location>
            <max-file-size>20848820</max-file-size>
            <max-request-size>418018841</max-request-size>
            <file-size-threshold>1048576</file-size-threshold>
        </multipart-config>
    </servlet>
    <servlet-mapping>
        <servlet-name>Diagapp</servlet-name>
        <url-pattern>/diagapp</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>Logoff</servlet-name>
        <servlet-class>com.brainsee.diagapp.Logoff</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Logoff</servlet-name>
        <url-pattern>/logoff</url-pattern>
    </servlet-mapping>
    <filter>
        <filter-name>CORS</filter-name>
        <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CORS</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter>
        <filter-name>LoginFilter</filter-name>
        <filter-class>com.brainsee.diagapp.LoginFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>/diagapp/admin</url-pattern>
    </filter-mapping>
    <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>
</web-app>

我知道。xhtml:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">
<h:head>
    <title>Diagnoseeditor</title>
</h:head>
<h:body>
    <h3>Diagnosen</h3>
    <h:form rendered="#{not empty diagnosisBean.list}">
        <h:dataTable value="#{diagnosisBean.list}" var="diagnosis">
            <h:column><f:facet name="header">ID</f:facet>#{diagnosis.id}</h:column>
            <h:column><f:facet name="header">Text</f:facet>#{diagnosis.text}</h:column>
            <h:column><f:facet name="header">Alternativname</f:facet>#{diagnosis.altname}</h:column>
            <h:column><f:facet name="header">2. Alternativname</f:facet>#{diagnosis.altname2}</h:column>
            <h:column><f:facet name="header">ICD-10</f:facet>#{diagnosis.icd10}</h:column>
            <h:column><f:facet name="header">Alpha-ID</f:facet>#{diagnosis.alphaid}</h:column>
            <h:column><h:commandButton value="edit" action="#{diagnosisBean.edit(diagnosis)}" /></h:column>
            <h:column><h:commandButton value="delete" action="#{diagnosisBean.delete(diagnosis)}" /></h:column>
        </h:dataTable>
    </h:form>
    <h:panelGroup rendered="#{empty diagnosisBean.list}">
        <p>Table is empty! Please add new diagnoses.</p>
    </h:panelGroup>
    <h:panelGroup rendered="#{!diagnosisBean.edited}">
        <h3>Add diagnosis</h3>
        <h:form>
            <p>Value: <h:inputText value="#{diagnosisBean.diagnosis.value}" /></p>
            <p><h:commandButton value="add" action="#{diagnosisBean.add}" /></p>
        </h:form>
    </h:panelGroup>
    <h:panelGroup rendered="#{diagnosisBean.edited}">
        <h3>Edit diagnosis #{diagnosisBean.diagnosis.id}</h3>
        <h:form>
            <p>Value: <h:inputText value="#{diagnosisBean.diagnosis.value}" /></p>
            <p><h:commandButton value="save" action="#{diagnosisBean.save}" /></p>
        </h:form>
    </h:panelGroup>
</h:body>
</html>

这是我的调度员服务中的呼叫

response.sendRedirect("admin/diagnosesedit.xhtml");

来自同一目录中的jsp文件。

WEB-INF/faces配置。xml:

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2" 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-facesconfig_2_2.xsd">
    <managed-bean>
        <managed-bean-name>diagnosisBean</managed-bean-name>
        <managed-bean-class>com.brainsee.diagapp.beans.DiagnosisBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
</faces-config>

诊断要点是:

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import java.io.Serializable;
import java.util.List;

@ManagedBean
@ViewScoped
public class DiagnosisBean implements Serializable {
    private List<Diagnosis> list;
    private Diagnosis diagnosis = new Diagnosis();
    private boolean edited;

    @PostConstruct
    public void init() {
        list = DiagnosisDAO.getAll();
    }

    public void add() {
        DiagnosisDAO.insert(diagnosis);
        diagnosis = new Diagnosis();
    }

    public void edit(Diagnosis diagnosis) {
        this.diagnosis = diagnosis;
        edited = true;
    }

    public void save() {
        DiagnosisDAO.update(diagnosis);
        diagnosis = new Diagnosis();
        edited = false;
    }

    public void delete(Diagnosis diagnosis) {
        DiagnosisDAO.delete(diagnosis);
    }

    public List<Diagnosis> getList() {
        return list;
    }

    public Diagnosis getDiagnosis() {
        return diagnosis;
    }

    public boolean isEdited() {
        return edited;
    }
}

在我的依赖项中,Mojarra-1.2和javax。faces:javax faces api:2.2包含在“提供的”范围内(将其更改为“编译”不会改变任何东西)。

共有1个答案

麻宜春
2023-03-14

....Arrrgh只是查看了伟大的JSF wiki,发现我使用的是Servlet 3.0特性,但使用了过时的Mojarra-1.2作为库。更新了图书馆,瞧,它成功了。所以RTFM:)

 类似资料:
  • 假设我们有这样一种方法: 在单元测试中,我们希望断言被调用过一次,而且只有一次;因此,我们可以在测试中使用另一个模拟结构来模拟它,这将为我们提供检查它是否已被调用的功能: 在单元测试中: 现在,问题是,由于是用关键字调用的,我们不能确定当我们在测试中到达断言时,它是否被调用过。 向

  • 首先笔试 5个测试,1个SQL,5个类似行测 1.自我介绍 2.做过哪些测试项目(没有😅) 3.计网学过吗(自己了解过) 4.说一下MySQL事务和索引 5.springcloud和springboot知道吗(知道没问) 6.Linux查看日志(不知道) 7.Linux文本编辑(不保存退出说反了😅) 8.京东购物车模块给你怎么测试(只说了一部分,很多重要点没说😅) 9.大学团队合作介绍一下(

  • 我试图将jBPM 5.4集成到现有的servlet中。 servlet在JBoss 7.1中运行良好,但在我添加一个与jBPM相关的API时,由于抛出异常而失败。(我使用了安装中的评估样本作为模板。)我向servlet的doPost()中添加了: 执行此语句后,将引发以下异常: 20:51:06394错误[org.apache.catalina.core.ContainerBase.[jboss.

  • 后端开发一面: 因为研究生阶段只用了C++,所以投的都是C++岗,面试官问我会不会java,我只能说我会但是都忘了 自我介绍 问的八股都是从项目中问的,都是基本八股(自己做的项目都没问,可能面试官不懂) 同步IO和异步IO的区别 IO多路复用 项目怎么测的QPS QPS和TPS(QPS是每秒请求数,而TPS是每秒事务数) select是1024个,epoll监听的文件文件描述符是无限的吗?(瞎蒙没

  • 问题内容: 我是ajax的新手。我试图将请求从我的gsp页面发送到控制器操作。但是我失败了。它没有调用控制器操作,并且页面正在重新加载。任何人都可以看看这个并提供帮助。这是我的以下页面>>> 这是我的控制器动作>>> 问题答案: 您可以尝试以下方法: 或这一个: 根据要求完成ajax调用:

  • 我正在我的开发箱上运行Karma/Jasmine/Angular 2.0测试。就在最近,我的开发箱上的Jasmine决定开始运行我的测试三次。是的,整整三次,每次都是。 在第一次运行时,一切都按预期通过。然而,在第二次和第三次通过时,所有相同的事情都失败了。它总是承认有7次测试,但运行21次,10次失败(一年级数学)??? 这在Travis和SauceLabs上也失败了。(注意:这链接到一个包含3