1

我参考了 netbeans.org 上的示例 spring 应用程序并尝试创建一个简单的登录应用程序。当我运行时,我收到此错误:

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Neither BindingResult nor plain target object for bean name 'login' available as request attribute

这是我的 login.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Business SMS Login</title>            
</head>

<body>
    <div id="mainContainer">
        <spring:nestedPath path="login">
        <form name="frmBSMSLogin" action="" method="post">
        <div id="controls">
            <div id="lgnUsername">
                <label for="txtUsername">Username</label>                     
                <spring:bind path="login.username">
                    <input type="text" name="${status.expression}" value="${status.value}" id="txtUsername" maxlength="20" class="textInput"/>
                </spring:bind>
            </div>
            <br/>
            <div id="lgnPassword">
                <label for="txtPassword">Password:</label>
                <spring:bind path="login.password">
                    <input type="password" id="txtPassword" maxlength="20" name="${status.expression}" value="${status.value}" class="textInput"/>
                </spring:bind>
            </div>
        </div>

        <div id="submitSection">
            <input type="button" value="Submit" class="buttonInput"/>
            <input type="reset" value="Reset" class="buttonInput"/>
        </div>
        </form>
        </spring:nestedPath>
    </div>
</body>

这是 LoginController.java

package controller;

import org.springframework.web.servlet.mvc.SimpleFormController;
import java.net.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;   
import org.springframework.web.portlet.ModelAndView;
import service.Login;

public class LoginController extends SimpleFormController {
private Login login;
public LoginController() {
    setCommandClass(GetLoginDetails.class);
    setCommandName("login");
    setSuccessView("dashboard");
    setFormView("index");
}

public void setLogin(Login login){
    this.login = login;
}

protected ModelAndView onSubmit( HttpServletRequest request, HttpServletResponse response, Object command, BindException errors)throws Exception {           
    //System.out.println("are we here?");
    GetLoginDetails l = (GetLoginDetails) command;
    ModelAndView mv = new ModelAndView(getSuccessView());
    mv.addObject("helloMessage", login.authenticate(l.getUsername(),l.getPassword()));
    return mv;
}    

}

这是 applicationContext.xml

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

<bean name="login" class="service.Login"/>

</beans>

我想我从上周开始就一直在做这件事。我通过参考 netbeans 的例子来做到这一点。这是链接http://netbeans.org/kb/docs/web/quickstart-webapps-spring.html。我还没有找到任何解决方案。从 PHP 背景开始,我已经发现 spring 框架太难了,但是我正在全力以赴。我使用 Netbeans 作为我的 IDE。这是一个好的选择还是 Eclipse 是标准的?另外请给我一些关于如何调试应用程序的建议。php 中的简单 echo 或 print_r 在这里看起来太奢侈了 :)

Ps 我之前发布过类似的问题,附近有人抱怨这是一个代码转储,并对我投了反对票。有很多问题存在大量代码转储,但人们很友善地提供了帮助。因此,任何认为这是代码转储或有些粗鲁语言的人请不要浪费您宝贵的时间来否决这个问题。我是一个真正的学习者在这里寻求帮助

4

2 回答 2

1

尝试删除

<spring:nestedPath path="login">

<body>
    <div id="mainContainer">

spring:nestedPath - 设置绑定标签路径使用的嵌套路径。

升级版:

在此处阅读有关此标签的信息

于 2012-05-18T15:31:10.463 回答
1

使用spring的表单标签有同样的错误。通过添加modelAttribute解决:

<form:form modelAttribute="hall" method="post" action="saveChanges">

希望这会有所帮助

于 2012-06-14T20:06:09.453 回答