簡體   English   中英

在先前提交后帶入jsp表單頁面(java spring)

[英]Bring jsp form page after previous submit (java spring)

Spring的新手(以及該問題的HTML / forms等),長期以來一直困擾於此問題。

因此,我想在首頁上輸入用戶名。 然后單擊提交,將您帶到儀表板(最終,將出現一個頁面,其中包含已連接的用戶列表,大量的提交按鈕以使用qpid jms發送預定義的消息)。

首頁很好,但是我單擊提交,然后收到錯誤消息(java.lang.IllegalStateException:BeanResult'dashboardModel'的BindingResult和普通目標對象都不能作為請求屬性使用)僅當我有form:form dashboard.jsp。 我真的不知道如何解決這個問題,並嘗試了我能找到的一切。 我的代碼很簡單,只是從教程中進行了修改,所以這里是:

login.jsp

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
<title>Spring MVC Form Handling</title>
</head>
<body>
<h2>Login Page:</h2>
<form:form modelAttribute="loginModel" method="POST"
    action="/HelloWeb/dashboard">
    <table>
        <tr>
            <td><form:label path="username">Name</form:label></td>
            <td><form:input path="username" /></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="Submit" /></td>
        </tr>
    </table>
</form:form>
</body>
</html>

Login.java

package com.tutorialspoint;
public class Login {
private String username;

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}
}

LoginController.java

package com.tutorialspoint;
import org.springframework.stereotype.Controller;
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 org.springframework.ui.ModelMap;

@Controller
public class LoginController {

@RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView login() {
    return new ModelAndView("login", "loginModel", new Login());
}

@RequestMapping(value = "/loggedIn", method = RequestMethod.POST) //never actually used
public String loggedIn(@ModelAttribute("Login") Login login, ModelMap model) {
    model.addAttribute("username", login.getUsername());

    return "dashboard";
}
}

dashboard.jsp

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
<title>DASHBOARD</title>
</head>
<body>
<table>
    <tr>
        <td>Dashboard</td>
        <td>DASHBOARD</td>
    </tr>
    <tr>
        <td>Username</td>
        <td>${username}</td>
    </tr>
    <tr>
        <td>variable</td>
        <td>${variable}</td>
    </tr>
</table>

<form:form modelAttribute="dashboardModel" method="POST"
    action="/HelloWeb/dashboard">
    <table>
        <tr>
            <td><form:label path="variable">Name</form:label></td>
            <td><form:input path="variable" /></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="Submit" /></td>
        </tr>
    </table>
</form:form>
</body>
</html>

儀表板

package com.tutorialspoint;

public class Dashboard {
private String variable;

public String getVariable() {
    return variable;
}
public void setVariable(String variable) {
    this.variable = variable;
}
}

DashboardController.java

package com.tutorialspoint;

import org.springframework.stereotype.Controller;
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 org.springframework.ui.ModelMap;

@Controller
public class DashboardController {
@RequestMapping(value = "/dashboard", method = RequestMethod.GET)
public ModelAndView dashboard() {
    return new ModelAndView("dashboard", "dashboardModel", new Dashboard());
}

@RequestMapping(value = "/dashboard", method = RequestMethod.POST)
public String addVariable(@ModelAttribute("SpringWeb") Dashboard dashboard,
        ModelMap model) {
    model.addAttribute("variable", dashboard.getVariable());
    return "dashboard";
}
}

謝謝你的時間。

我認為問題出在這里:

<form:form modelAttribute="loginModel" method="POST" action="/HelloWeb/dashboard">
                           ^^^^^^^^^^

和這里:

@RequestMapping(value = "/loggedIn", method = RequestMethod.POST) //never actually used
public String loggedIn(@ModelAttribute("Login") Login login, ModelMap model) {
                                        ^^^^^

form:form元素上的modelAttribute值和@ModelAttribute參數應該相同。

我的意思是:

@RequestMapping(value = "/loggedIn", method = RequestMethod.POST) //never actually used
public String loggedIn(@ModelAttribute("loginModel") Login login, ModelMap model) {
                                        ^^^^^^^^^^

編輯:

此外,表單部分應如下所示:

<form:form modelAttribute="dashboardModel" method="POST" action="/loggedIn.htm">
   <table>
      <tr>
        <td>Name</td>
        <td><form:input path="username" /></td>
      </tr>
      <tr>
        <td colspan="2"><input type="submit" value="Submit" /></td>
      </tr>
   </table>
</form:form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM