问题:

index.html 页面不显示内容

日志:

2019-04-05 21:32:42.173  INFO 15052 --- [  restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2019-04-05 21:32:42.178  INFO 15052 --- [  restartedMain] com.cjx.shequ.ShequApplication           : Started ShequApplication in 6.312 seconds (JVM running for 8.216)
2019-04-05 21:32:44.978  INFO 15052 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2019-04-05 21:32:44.979  INFO 15052 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2019-04-05 21:32:45.005  INFO 15052 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 26 ms
2019-04-05 21:32:45.046  INFO 15052 --- [nio-8080-exec-1] com.cjx.shequ.aspect.LogAspect           : BeforeMethodclass org.springframework.validation.support.BindingAwareModelMap {}|
2019-04-05 21:32:45.601  INFO 15052 --- [nio-8080-exec-1] com.cjx.shequ.aspect.LogAspect           : after methodFri Apr 05 21:32:45 CST 2019
2019-04-05 21:32:45.652  INFO 15052 --- [nio-8080-exec-1] o.a.v.t.v.servlet.ServletToolboxManager  : Using config file '/toolbox.xml'
2019-04-05 21:32:45.652  WARN 15052 --- [nio-8080-exec-1] o.a.v.tools.view.XMLToolboxManager       : XMLToolboxManager has been deprecated. Please use org.apache.velocity.tools.ToolboxFactory instead.
2019-04-05 21:32:45.652  WARN 15052 --- [nio-8080-exec-1] o.a.v.t.v.servlet.ServletToolboxManager  : ServletToolboxManager has been deprecated. Please use org.apache.velocity.tools.ToolboxFactory instead.

代码:

Controller
package com.cjx.shequ.controller;


import com.cjx.shequ.model.Question;
import com.cjx.shequ.model.ViewObject;
import com.cjx.shequ.service.QuestionService;
import com.cjx.shequ.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.ArrayList;
import java.util.List;


@Controller
public class IndexController {
    private static final Logger logger= LoggerFactory.getLogger(IndexController.class);
    @Autowired
    UserService userService;
    @Autowired
    QuestionService questionService;

    @RequestMapping(path={"/","/index"},method = {RequestMethod.GET})
    public String index(Model model) {
        List<Question> latestQuestions = questionService.getLatestQuestions(0, 0, 10);
        List<ViewObject> vos = new ArrayList<>();
        for(Question question:latestQuestions){
            ViewObject vo = new ViewObject();
            vo.set("question",question);
            vo.set("user",userService.getUser(question.getUserId()));
            vos.add(vo);
        }
        model.addAttribute(vos);
        return "index";
    }
}
Service
package com.cjx.shequ.service;

import com.cjx.shequ.dao.QuestionDAO;
import com.cjx.shequ.model.Question;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class QuestionService {
    private static final Logger logger = LoggerFactory.getLogger(QuestionService.class);
    @Autowired
    private QuestionDAO questionDAO;

    public List<Question> getLatestQuestions(int userId, int offset, int limit){
        return questionDAO.selectLatestQuestions(userId,offset,limit);
    }

}

Dao

package com.cjx.shequ.dao;

import com.cjx.shequ.model.Question;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface QuestionDAO {
    String TABLE_NAME = " question ";
    String INSERT_FIELDS = " title, content, created_date, user_id, comment_count ";
    String SELECT_FIELDS = " id, " + INSERT_FIELDS;

    @Insert({"insert into ", TABLE_NAME, "(", INSERT_FIELDS,
            ") values (#{title},#{content},#{createdDate},#{userId},#{commentCount})"})
    int addQuestion(Question question);

    List<Question> selectLatestQuestions(@Param("userId") int userId, @Param("offset") int offset,
                                         @Param("limit") int limit);

}
QuestionDAO.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cjx.shequ.dao.QuestionDAO">
    <sql id="table">question</sql>
    <sql id="selectFields">id, title, content, comment_count,created_date,user_id
    </sql>
    <select id="selectLatestQuestions" resultType="com.cjx.shequ.model.Question">
        SELECT
        <include refid="selectFields"/>
        FROM
        <include refid="table"/>

        <if test="userId != 0">
            WHERE user_id = #{userId}
        </if>
        ORDER BY id DESC
        LIMIT #{offset},#{limit}
    </select>
</mapper>

求解:

com.cjx.shequ.controller.Indexcontroller

model.addAttribute("vos",vos); 忘了写"vos",