`
airu
  • 浏览: 273147 次
  • 性别: Icon_minigender_1
  • 来自: 云南
社区版块
存档分类
最新评论

Spring入门之spring:bind

 
阅读更多
最近在学习spring,按照一个spring的例子,结果出错拉。错误是:
Neither BindingResult nor plain target object for bean name 'command' available as request attribute

使用的是jdk1.5 + tomcat5.5 +Spring2.1

下面说说我的代码:
spring.login.LoginAction.java
spring.login.LoginForm.java
web.xml
login-serlvet.xml
form.jsp
success.jsp
这些是主要的文件,部署的话是普通的web部署,当然,jsp文件在WEB-INF/jsp/内。
1、 LoginAction.java:
packagespring.login;

importorg.springframework.validation.BindException;
importorg.springframework.web.servlet.ModelAndView;
importorg.springframework.web.servlet.mvc.SimpleFormController;

publicclassLoginActionextendsSimpleFormController...{

protectedModelAndViewonSubmit(Objectcommand,BindExceptionerrors)
throwsException...{
LoginFormform
=(LoginForm)command;
if("madic".equals(form.getUsername())
&&"123".equals(form.getPassword()))...{
returnnewModelAndView(this.getSuccessView(),"user",form.getUsername());
}
else...{
errors.reject(
"loginfail","用户名或密码错");
returnnewModelAndView(this.getFormView(),errors.getModel());
}


}


}

LoginForm.java:
packagespring.login;

publicclassLoginForm...{
privateStringusername;
privateStringpassword;
publicStringgetUsername()...{
returnusername;
}

publicvoidsetUsername(Stringusername)...{
this.username=username;
}

publicStringgetPassword()...{
returnpassword;
}

publicvoidsetPassword(Stringpassword)...{
this.password=password;
}

}


loginValidator.java

packagespring.login;

importorg.springframework.validation.Errors;
importorg.springframework.validation.Validator;

publicclassLoginValidatorimplementsValidator...{
publicbooleansupports(Classclazz)...{
returnclazz.equals(LoginForm.class);
}


publicvoidvalidate(Objectobj,Errorserrors)...{
LoginFormform
=(LoginForm)obj;
if(form.getPassword().length()<2)...{
errors.rejectValue(
"password","less-than-two",null,"密码不得小于2个字符");
}

}

}

web.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<web-appid="WebApp_ID"version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
login
</display-name>
<description>
SpringLoginExamples.
</description>
<display-name>SpringLogin2Examples</display-name>

<!--<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
-->


<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/login-servlet.xml</param-value>
</context-param>

<servlet>
<servlet-name>login</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/login-servlet.xml</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>

<taglib>
<taglib-uri>/spring</taglib-uri>
<taglib-location>/WEB-INF/spring.tld</taglib-location>
</taglib>
</web-app>

login-servlet.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEbeansPUBLIC"-//SPRING/DTDBEAN/EN""http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<beanid="loginValidator"class="spring.login.LoginValidator"/>

<beanid="urlMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<propertyname="mappings">
<props>
<propkey="login.htm">loginAction</prop>
</props>
</property>

</bean>

<beanid="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<propertyname="viewClass">
<value>org.springframework.web.servlet.view.InternalResourceView</value>
</property>

<propertyname="prefix">
<value>/WEB-INF/jsp/</value>
</property>

<propertyname="suffix">
<value>.jsp</value>
</property>
</bean>

<beanid="loginAction"class="spring.login.LoginAction">
<propertyname="sessionForm">
<value>true</value>
</property>
<propertyname="commandClass">
<value>spring.login.LoginForm</value>
</property>
<propertyname="successView">
<value>success</value>
</property>
<propertyname="formView">
<value>form</value>
</property>
<propertyname="commandName">
<value>loginForm</value>
</property>

<propertyname="validator">
<refbean="loginValidator"/>
</property>
</bean>


</beans>


form.jsp
<%...@tagliburi="/spring"prefix="spring"%>
<%...@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding
="UTF-8"
%>
<html>
<head><title>Login</title></head>
<body>

<spring:bindpath="command.*">
<fontcolor="red"><b>${status.errorMessage}</b></font><br>
</spring:bind>

请输入使用者
的名称与密码:
<p>
<formname="loginForm"action="login.htm"method="post">

<spring:bindpath="command.username">
名称
<br>
<inputtype="text"name="${status.expression}"value="${status.value}"/>
</spring:bind>
<br>
<spring:bindpath="command.password">
密码
<br>
<inputtype="password"name="${status.expression}"value="${status.value}"/><br>
</spring:bind>

<inputtype="submit"value="确定"/>

</form>
</body>
</html>


success.jsp就不用说了。很简单。
大家看到什么错误了没有?

<propertyname="commandName">
<value>loginForm</value>
</property>
看看这里,这个commandName就是在login-servlet.xml里的 controller bean loginAction的属性之一。
我们要改为: command
这样在<Spring:bind path="command.*">就不会找不到了。

此外,这里还要注意:

<input>的name属性值必须与<spring:bind>的path属性的匹配,否则就绑定不了!

例如下面的代码就绑定不了

<spring:bind path="user.age">
<input type="text" name="theAge" value="${status.value}">
<font color="red">${status.errorMessage}</font>
</spring:bind>

为了避免手误,强烈推荐下列方法来绑定:

<spring:bind path="user.age">
<input type="text" name="${status.expression}" value="${status.value}">
<font color="red">${status.errorMessage}</font>
</spring:bind>

这个倒是没有注意,看来只有错误,才能更深理解阿。
分享到:
评论

相关推荐

    spring framework入门(11):springmvc简易环境搭建

    import org.springframework.web.bind.annotation.GetMapping; @Controller public class HelloController { @GetMapping("/hello") public String sayHello(Model model) { model.addAttribute("message", ...

    IDEA中使用Spring的简单入门(加小案例)

    在本文中,我们将深入探讨如何在IntelliJ IDEA(IDEA)中使用Spring框架进行简单的入门。Spring是一个广泛使用的开源Java框架,它为构建企业级应用程序提供了强大的支持,包括依赖注入、面向切面编程(AOP)、事务...

    spring的入门程序示例

    本示例旨在引导初学者入门Spring框架,通过一个简单的应用实例来理解其核心概念。 Spring框架的核心特性包括依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)。依赖注入...

    spring WEB入门级项目搭建

    在本教程中,我们将深入探讨如何搭建一个基于Spring框架的Web入门级项目,重点是使用Spring MVC和Spring JDBC实现简单的用户登录功能。Spring是一个广泛使用的Java企业级应用框架,而Spring MVC是它的一个核心模块,...

    spring入门环境部署

    本文将深入介绍如何进行Spring入门环境部署,以便在Eclipse集成开发环境中启动你的第一个Spring项目。 首先,你需要确保已经安装了Java Development Kit (JDK) 和Eclipse IDE。JDK是编写Java程序的基础,而Eclipse...

    Spring4整合Jersey2.9

    这个入门案例采用Maven作为项目构建工具,使得整个过程更加简便。 首先,理解Spring4和Jersey2.9的核心概念至关重要。Spring4是一个开源的应用框架,它提供了依赖注入(Dependency Injection,DI)和面向切面编程...

    Spring MVC入门实例

    **Spring MVC 入门实例详解** ...Spring MVC 提供了强大的功能和灵活性,是构建现代企业级 Java Web 应用的首选框架之一。通过不断实践和深入学习,你可以掌握更多高级特性,实现高效、可维护的 Web 应用程序。

    Spring boot 入门实例

    **Spring Boot 入门实例详解** Spring Boot 是一个由 Pivotal 团队开发的 Java 框架,旨在简化Spring应用的初始搭建以及开发过程。它通过提供默认配置,帮助开发者快速创建独立运行的、生产级别的基于Spring的应用...

    Spring之MVC 入门实例

    **Spring MVC 入门实例详解** Spring MVC 是 Spring 框架的重要组成部分,它是一个用于构建 Web 应用程序的模型-视图-控制器(MVC)架构。本实例将帮助初学者理解如何配置和使用 Spring MVC 实现一个简单的 Web ...

    Spring MVC入门Demo

    本入门Demo将帮助初学者快速理解并掌握 Spring MVC 的基本概念和使用方法。 首先,Spring MVC 提供了控制器(Controller)的概念,它负责接收来自客户端的请求,处理业务逻辑,并将结果传递给视图(View)。在 ...

    spring框架入门demo

    本示例"spring框架入门demo"旨在帮助初学者理解如何在Eclipse环境中搭建和运行一个基本的Spring项目,展示Spring的核心特性,如依赖注入(Dependency Injection,DI)和控制反转(Inversion of Control,IoC)。...

    spring boot入门.txt

    ### Spring Boot 入门知识点详解 #### Spring Boot 简介 Spring Boot 是一款基于 Spring 框架的全新开发框架,旨在简化 Spring 应用的初始搭建以及开发过程。它由 Pivotal 团队提供并维护,是 Spring 家族中的新...

    Spring Data JPA入门项目01

    import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/users") public class UserController { private final UserService userService; @Autowired public UserController...

    Spring MVC入门 XML版本+注释版本

    这个入门教程将涵盖XML配置和注解配置两种方式,帮助初学者理解如何在Spring MVC中搭建基本的"Hello, World!"应用。 首先,我们从XML配置开始。在Spring MVC中,`DispatcherServlet`是入口点,它负责分发HTTP请求到...

    Spring MVC HelloWorld入门例子

    import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloWorldController { @RequestMapping("/hello")...

    spring-boot入门视频

    **Spring Boot 入门知识详解** Spring Boot 是一个由 Pivotal 团队开发的 Java 框架,它的设计目标是简化 Spring 应用的初始搭建以及开发过程。Spring Boot 基于约定优于配置的理念,使得开发者可以快速创建生产...

    Spring-boot 入门案例

    **Spring Boot 入门案例详解** ...随着学习深入,你将发现更多 Spring Boot 的强大之处,比如云原生支持、微服务架构等。记得查看 `spring-boot-examples-master` 中的详细文档,以获取更深入的实践指导。

    Spring MVC入门小例子

    **Spring MVC 入门教程** Spring MVC 是 Spring 框架的一个模块,专门用于构建 Web 应用程序。它提供了一种模型-视图-控制器(MVC)架构,简化了开发过程,使得开发者可以专注于业务逻辑而不必过于关注底层细节。在...

Global site tag (gtag.js) - Google Analytics