2016-07-16 26 views
0
  • 當我嘗試調試它。我可以看到來自儀表板控制器的方法沒有被出於某種原因調用,任何人都知道如何解決它?

**更新時間:addind視圖解析器Spring 4.3.0.RELEASE - 如何通過post方法將對象列表發送給jsp?

我不understad如何將用戶ModelAndView的correctley和我的應用程序使用它。

我需要的時候userAdmin loged進入網站就會直接把他給AdminDeshboard和那裏所有的用戶都會在表顯示或財產以後

這是我的代碼:

的AppConfig-MVC。 XML:

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xmlns="http://www.springframework.org/schema/beans" 
     xsi:schemaLocation="http://www.springframework.org/schema/mvc 
          http://www.springframework.org/schema/mvc/spring-mvc.xsd 
          http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd"> 

    <mvc:annotation-driven/> 

    <mvc:resources mapping="/resources/**" location="/resources/"/> 

    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
     <property name="basenames"> 
      <list> 
       <value>classpath:validation</value> 
      </list> 
     </property> 
    </bean> 

    <!-- Resolves views selected for rendering by @Controllers to .jsp resources 
     in the /WEB-INF/views directory --> 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="viewClass"> 
      <value>org.springframework.web.servlet.view.JstlView</value> 
     </property> 
     <property name="prefix"> 
      <value>/WEB-INF/views/</value> 
     </property> 
     <property name="suffix"> 
      <value>.jsp</value> 
     </property> 
    </bean> 


</beans> 

DashboardController:

package com.searcher.controller; 

import java.util.List; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.servlet.ModelAndView; 

import com.searcher.entity.UserEntity; 
import com.searcher.service.UserService; 

@Controller 
public class DashboardController { 

    @Autowired 
    private UserService userService; 

    @RequestMapping("/dashboard") 
    public ModelAndView helloWorld() { 

     String message = "<br><div style='text-align:center;'>" 
       + "<h3>This message is coming from DashboardController.java </h3></div><br><br>"; 
     String strEndList = ""; 

     List<UserEntity> userList = userService.findAll(); 

     ModelAndView modelAndView = new ModelAndView("userList"); 
     modelAndView.addObject("userList", userList); 

     return modelAndView; 
     //return new ModelAndView("welcome", "message", message + strEndList); 
    } 

Dashboard.jsp

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

<c:set var="contextPath" value="${pageContext.request.contextPath}"/> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> 
    <meta name="description" content=""> 
    <meta name="author" content=""> 

    <title>Dashboard</title> 

    <link href="${contextPath}/resources/css/bootstrap.min.css" rel="stylesheet"> 

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> 
    <!--[if lt IE 9]> 
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> 
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> 
    <![endif]--> 
</head> 
<body> 
<div class="container"> 

    <c:if test="${pageContext.request.userPrincipal.name != null}"> 
     <form id="logoutForm" method="POST" action="${contextPath}/logout"> 
      <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> 
     </form> 

     <h2>Welcome ${pageContext.request.userPrincipal.name} | <a onclick="document.forms['logoutForm'].submit()">Logout</a></h2> 


     <br/> 
     <br/> 
     <br/> 

     <h2>Users:</h2> 

     <form action="user.do" method="post"> 

      <table> 
       <tr> 
        <td> 
         Id 
        </td> 
        <td> 
         Name 
        </td> 
        <td> 
         Password 
        </td> 
        <td> 
         Email 
        </td> 
        <td> 
         Phone 
        </td> 
       </tr> 

       <c:forEach items="${userList}" var="user"> 
        <tr> 
         <td> 
          ${user.Id} 
         </td> 
         <td> 
          ${user.Name} 
         </td> 
         <td> 
          ${user.Password} 
         </td> 
         <td> 
          ${user.Email} 
         </td> 
         <td> 
          ${user.Phone} 
         </td> 
        </tr> 
       </c:forEach> 
      </table> 

     </form> 


    </c:if> 

</div> 
<!-- /container --> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script src="${contextPath}/resources/js/bootstrap.min.js"></script> 
</body> 
</html> 

的AppConfig-security.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/security" 
      xmlns:beans="http://www.springframework.org/schema/beans" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans.xsd 
           http://www.springframework.org/schema/security 
           http://www.springframework.org/schema/security/spring-security-4.1.xsd"> 

    <http auto-config="true"> 
     <intercept-url pattern="/" access="hasRole('ROLE_USER')"/> 
     <intercept-url pattern="/dashboard" access="hasRole('ROLE_USER')"/> 
     <form-login login-page="/login" default-target-url="/welcome" authentication-failure-url="/login?error" username-parameter="name" password-parameter="password"/> 
     <logout logout-success-url="/login?logout" /> 
    </http> 

    <authentication-manager alias="authenticationManager"> 
     <authentication-provider user-service-ref="userDetailsServiceImpl"> 
      <password-encoder ref="encoder"></password-encoder> 
     </authentication-provider> 
    </authentication-manager> 

    <beans:bean id="userDetailsServiceImpl" class="com.searcher.service.UserDetailsServiceImpl"></beans:bean> 

    <beans:bean id="encoder" 
      class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"> 
     <beans:constructor-arg name="strength" value="11"/> 
    </beans:bean> 
</beans:beans> 
+0

你發送請求/儀表板後得到任何異常/錯誤? – Vaibs

+0

@Vaibs不,有些東西不起作用 – Guyb

回答

0

你必須修復您如何叫從控制器到你的JSP列表中的問題。

所以,從

<c:forEach items="${userList.userList}" var="car"> 
    <tr> 
     <td> 
      ${user.Id} 
     </td> 
     ... 
    </tr> 
</c:forEach> 

<c:forEach items="${userList}" var="user"> 
    <tr> 
     <td> 
      ${user.Id} 
     </td> 
     ... 
    </tr> 
</c:forEach> 
+0

你說得對,我很困惑,因爲很累 但是,即使在你的修改之後,這仍然不起作用 – Guyb

+0

你期望在'dashboard.jsp'中看到結果,但是基於從你的控制器,你想在'userList.jsp'中查看它。 'ModelAndView modelAndView = new ModelAndView(「userList」);'。 –

+0

@Raw Burawes我將它改爲dashbaord,但它仍然不起作用 – Guyb

0

顯示我們請你的ViewResolver的配置。我認爲ModelAndView實例與錯誤的JSP名稱創建:

ModelAndView modelAndView = new ModelAndView("userList"); 

,應該是:

ModelAndView modelAndView = new ModelAndView("Dashboard"); 
+0

我使用viewResolver編輯我的問題 – Guyb

相關問題