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

将ContextLoaderListener添加到带primeface页面的Spring mvc项目后,找不到404页面

郭皓
2023-03-14

我是Spring的新手,试图在Spring和primeface之间进行整合。添加ContextLoaderListenerResestContextListener后,在tomcat上运行项目时,我得到404页没有找到。我的web.xml档案:

<?xml version = "1.0" encoding = "UTF-8"?>
   <web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
            xmlns = "http://java.sun.com/xml/ns/javaee" 
            xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
            xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee 
            http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
            id = "WebApp_ID" version="2.5">
    
    <welcome-file-list>
      <welcome-file>login.xhtml</welcome-file>
   </welcome-file-list>
    
    <servlet>
      <servlet-name>Faces Servlet</servlet-name>
      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>
    
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
      <servlet-name>Faces Servlet</servlet-name>
      <url-pattern>*.xhtml</url-pattern>
      <url-pattern>/faces/*</url-pattern>
   </servlet-mapping>
     
     <context-param>
        <param-name>contextConfigLocation</param-name>
         <param-value>
            /WEB-INF/spring/spring.xml
        </param-value>
    </context-param>

    <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>

这是我的faces-config.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    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_3.xsd"
    version="2.3">
 
    <application>
     <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
   </application>

     <navigation-rule>
        <display-name>/login.xhtml</display-name>
        <from-view-id>/login.xhtml</from-view-id>
    </navigation-rule>
    <navigation-rule>
        <display-name>/login.xhtml</display-name>
        <from-view-id>/login.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>viewRecords</from-outcome>
            <to-view-id>view.xhtml</to-view-id>
            <redirect/>
        </navigation-case>
    </navigation-rule>
</faces-config>

下面是我的控制器类:

    package com.testtask.nagarro.controller;

    import java.util.List;
    import java.util.Map;

    import javax.annotation.Resource;
    import javax.validation.Valid;

    import org.hibernate.annotations.Source;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.validation.BindingResult;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.ModelAndView;

    import com.testtask.nagarro.forms.LoginForm;
    import com.testtask.nagarro.forms.StatementForm;
    import com.testtask.nagarro.interfaces.StatementRepository;
    import com.testtask.nagarro.interfaces.UserService;
    import com.testtask.nagarro.models.Statement;

    @Controller
    public class NagarroController {
    
    @Autowired
    private UserService userService;
    
    public UserService getUserService() {
        return userService;
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    @RequestMapping(value= "/", method=RequestMethod.GET)
    public String loginPage() {
        
        return "login";
    }
    
    @RequestMapping(value="/login", method=RequestMethod.GET)
    public ModelAndView login() {
        
        ModelAndView model = new ModelAndView();
        model.setViewName("login");
        
        return model;
    }
    
    @RequestMapping(value="/viewRecords", method = RequestMethod.POST) 
    public String showHomePage(StatementForm form) {
        
        System.out.println("In view records controller");
        
        List<Statement> records = getUserService().getRecordsByAccountId(form.getAccountId());
        
        return "view";
    }

    @RequestMapping(method=RequestMethod.POST)
    public String processForm(@Valid LoginForm loginForm, BindingResult result, 
                                                    Map<String, LoginForm> model) {
        String username = "UserName";
        String password = "password";
        
        if(result.hasErrors()) {
            
            return "loginform";
        }
        
        loginForm = (LoginForm) model.get("loginForm");
        if(!loginForm.getUsername().equals(username) || !loginForm.getPassword().equals(password)) {
            return "loginForm";
        }
        
        model.put("loginForm", loginForm);
        return "home";
        
    }
    

}

我试图在网上找到解决方案,但我感到困惑,因为大多数示例都使用JSP。请指出问题所在,我正在连接github链接。

共有1个答案

戚宏扬
2023-03-14

您的视图不在InternalViewResolver bean中定义的webapp/WEB-INF文件夹中。它们位于webapp文件夹中。

 类似资料:
  • 这是我在SpringMVC中使用Maven的第一个应用程序。下面是应用程序结构。 控制器代码: 当我点击index.jsp中的链接时,页面应该被遍历到helloworld.jsp

  • 我有以下错误 未找到页面(404)请求方法:GET请求URL:http://127.0.0.1:8000/使用Decoder.urls中定义的URLconf,Django尝试了这些URL模式,顺序如下:form.html[name='form1']hl7[name='hl7']空路径与这些都不匹配。您会看到这个错误,因为您的Django设置文件中有DEBUG=True。将其更改为False,Dja

  • 我在服务器上上传了我的网站,我的网站运行良好。但我有个问题。 当我从路由转到路由时,组件也被加载了。但是当我复制我的组件url时,我得到了。 例如,当我复制/粘贴此url时: http://test.shadyab.com/offers/Arya-Ceremonial-Pool-VIP-off 我有一个。 我的路线: 我的应用程序。js: 即使用户想要刷新当前网页,也会收到404错误。 我的服务器

  • 当我使用eclipse启动Tomcat9,然后导航到http://localhost:8080时,它会给出404页的not found并抛出错误:“origin server dot find a current representation for the target resource or is not welligen to display that ixist”。但是,当我转到tomca

  • 问题内容: 我目前在Go中工作。我在本地计算机上创建了一个Web服务器。我按照此页面上的说明在Go Web应用程序中渲染CSS,但仍然出现404错误,程序似乎无法找到我的css文件在哪里。我的目录如下。 在文件夹contains中,还包含。 我文件中的代码如下。 当我转到404页面时,找不到页面。我还使用模板来呈现html代码。模板在文件夹中 html代码如下: 问题答案: 由于您没有为文件夹指定

  • 问题内容: 如何使用itext从html源向pdf添加标头? 当前,我们扩展了PdfPageEventHelper并覆盖了这些方法。工作正常,但是当我进入2个以上页面时,它将引发RuntimeWorkerException。 问题答案: 通常, 禁止 在事件中添加内容。这是 禁止 添加内容到的对象。您应该使用而 不是 文档在方法中添加页眉和页脚。此外:通过一遍又一遍地解析HTML,您正在浪费大量C