Spring-MVC模型仅在页面刷新后更新

时间:2014-11-03 08:46:07

标签: spring jsp spring-mvc

我正在开发一个spring-mvc项目,该项目使用JSP文件添加注释。现在,所有CRUD操作都在项目中工作。唯一的问题是在数据库中看到更新的信息,我每次都要点击刷新浏览器按钮。我检查了flashattributes,但由于我没有重定向,只是返回对象,我觉得没有用。我发布我的控制器代码和JSP代码。任何想法,我需要点击刷新。

P.S:删除功能不需要刷新,是的,我尝试将重定向用于其他功能。

COntroller代码:

@RequestMapping(value= "/note/add")
    public String addNote(@ModelAttribute("notices") Notes p,Model model) {
        Person person = personService.getCurrentlyAuthenticatedUser();
        model.addAttribute("notices", new Notes());
        model.addAttribute("listNotes",this.notesService.listNotes());
        model.addAttribute("listNotes", this.notesService.listNotePerson(person));
        model.addAttribute("section1",this.notesService.listNotesBySectionId(1,person));
        model.addAttribute("section2",this.notesService.listNotesBySectionId(2,person));
        model.addAttribute("section3",this.notesService.listNotesBySectionId(3,person));
}
 @RequestMapping("/editnote/{id}")
    public String editNote(@PathVariable("id") Integer id, Model model){
        Person person = personService.getCurrentlyAuthenticatedUser();
        model.addAttribute("notices", this.notesService.getNoteById(id));
        model.addAttribute("section1",this.notesService.listNotesBySectionId(1,person));
        model.addAttribute("section2",this.notesService.listNotesBySectionId(2,person));
        model.addAttribute("section3",this.notesService.listNotesBySectionId(3,person));
}
 @RequestMapping(value = "/note/listing", method=RequestMethod.GET)
    public String listNotices(Model model) {

        Person person = personService.getCurrentlyAuthenticatedUser();
        model.addAttribute("notices",new Notes());
        model.addAttribute("listNotes", this.notesService.listNotePerson(person));
        model.addAttribute("section1",this.notesService.listNotesBySectionId(1,person));
        model.addAttribute("section2",this.notesService.listNotesBySectionId(2,person));
        model.addAttribute("section3",this.notesService.listNotesBySectionId(3,person));
}

JSP代码:

<c:url var="addAction" value="/note/add" ></c:url>
<form:form action="${addAction}" commandName="notices">
    <table>
        <c:if test="${!empty notices.notetext}">
            <tr>
                <td>
                    <form:label path="noticesid">
                        <spring:message text="noticesid"/>
                    </form:label>
                </td>
                <td>
                    <form:input path="noticesid" readonly="true" size="8"  disabled="true" />
                    <form:hidden path="noticesid" />
                </td>
            </tr>
        </c:if>
        <tr>
            <td>
                <form:label path="notetext">
                    <spring:message text="notetext"/>
                </form:label>
            </td>
            <td>
                <form:input path="notetext"  />
            </td>
        </tr>
        <tr>
            <td>
                <form:label path="notetag" >
                    <spring:message text="notetag"/>
                </form:label>
            </td>
            <td>
                <form:input path="notetag"/>
            </td>
        </tr>
        <tr>
            <td>
                <form:label path="notecolor">
                    <spring:message text="notecolor"/>
                </form:label>
            </td>
            <td>
                <form:input path="notecolor" />
            </td>
        </tr>

        <tr>
            <td>
                <form:label path="canvasid">
                    <spring:message text="canvasid"/>
                </form:label>
            </td>
            <td>
                <form:input path="canvasid" />
            </td>
        </tr>

        <tr>
            <td>
                <form:label path="sectionid">
                    <spring:message text="sectionid"/>
                </form:label>
            </td>
            <td>
                <form:input path="sectionid"  />
            </td>
        </tr>

        <tr>
            <td>
                <form:label path="canvasnName">
                    <spring:message text="canvasnName"/>
                </form:label>
            </td>
            <td>
                <form:input path="canvasnName"  />
            </td>
        </tr>


        <tr>
            <td colspan="2">
                <c:if test="${!empty notices.noticesid}">
                    <input type="submit"
                           value="<spring:message text="Edit note"/>" />
                </c:if>
                <c:if test="${empty notices.notetext}">
                    <input type="submit"
                           value="<spring:message text="Add note"/>" />
                </c:if>
            </td>
        </tr>
    </table>
</form:form>
<br>

<h3>Notes List</h3>
<c:url var="listAction" value="/note/listing" ></c:url>
 <form:form action="${section1}" commandName="notices" method="post">  // Same code with section2 and section3
<c:if test="${!empty notices.noticesid}">
    <table class="tg">
        <tr>
            <th width="80">Notes ID</th>
            <th width="120">Notes text</th>
            <th width="120">Note Tag</th>
            <th width="120">Note color</th>
            <th width="120">Note section</th>
            <th width="120">Canvas id</th>
            <th width="120">Canvas name</th>
            <th width="120">Other id</th>
            <th width="60">Edit</th>
            <th width="60">Delete</th>
        </tr>
        <c:forEach items="${section1}" var="notices">
            <tr>
                <td>${notices.noticesid}</td>
                <td>${notices.notetext}</td>
                <td>${notices.notetag}</td>
                <td>${notices.notecolor}</td>
                <td>${notices.sectionid}</td>
                <td>${notices.canvasid}</td>
                <td>${notices.canvasnName}</td>
                <td>${notices.personid}</td>
                <td><a href="<c:url value='/editnote/${notices.noticesid}' />" >Edit</a></td>
                <td><a href="<c:url value='/removenote/${notices.noticesid}' />" >Delete</a></td>
            </tr>
        </c:forEach>
    </table>
</c:if>
</form:form>

Debug screenshot

2 个答案:

答案 0 :(得分:1)

所以我最终通过在/ note / add函数的末尾调用return“redirect:/ note / listing”来解决它。

答案 1 :(得分:1)

要完全清楚这个答案,只需创建:

ModelAndView控制器,在控制器的末尾,请添加:

ModelAndView mv = new ModelAndView("redirect:/note/listing");
return mv;