caike

优秀是一种习惯,生命是一种过程,两点之间最短的距离并不一定是直线,只有知道如何停止的人才知道如何加快

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  3 随笔 :: 2 文章 :: 19 评论 :: 0 Trackbacks

Jodd是一个开源项目,http://jodd.sourceforge.net有一个好用的jsp标签,可以大大简化有表单输入的controller

 

使用Jodd的优点:

1. 简化和统一controller,抛弃extends SimpleFormController,统一使用implements Controller的方式。

2. 简化JSP页面的bind,不需要一个字段一个字段的绑定。

3. bean没有任何要求,可以使用任意的bean做为formBean.

 

使用方法简介:

1.jodd.jar放到web-inf->lib下,在web.xml里声名标签:

<taglib>

       
<taglib-uri>jodd</taglib-uri>

       
<taglib-location>/WEB-INF/lib/jodd.jar</taglib-location>

    
</taglib>

 

2.任意的一个javaBean做为FormBean

package caike; 

public class User {

       
private String userName; 

       
private String password;
     

       
public String getPassword() {

              
return password;

       } 

       
public void setPassword(String pwd) {

              
this.password = pwd;

       } 

       
public String getUserName() {

              
return userName;

       } 

       
public void setUserName(String username) {

              
this.userName = username;

       }
 

}

3.JSP页面使用jodd tag:,比如对应用户登录页面的

<%@page import="caike.User"%>

<%@taglib uri="jodd" prefix="jodd"%>

 

<jodd:form beans="user" scopes="session">

<form action="my.htm" method="post" >
 

    
<table width="300" border="0" cellspacing="0" cellpadding="0"

       align
="center" class="white">  

       
<tr>

           
<td height="32" align="right" width="107">用户名:</td>

       
<td height="32" width="193"><input type="text" name="userName"

              class
="input" size="20"> </td>          

       
</tr>

       
<tr>

           
<td height="33" align="right" width="107">密码:</td>

           
<td height="33" width="193"><input type="password" name="password"

              class
="input" size="21"></td>

       
</tr>
      

        
<tr>

           
<td height="69" align="center" colspan="2">

            
<input type="submit" name="Submit" value="登录">

       
</tr>

    
</table>

</form>

</jodd:form>

 

4.Dispatch-servelt.xml中对controller的配置

<bean id="myController" class="caike.MyController">    

    </bean>

    不再需要这种方式:

    <!--

       <bean id="myController" class="caike.MyFormController">    

       <property name="commandClass" value="caike" />      

       <property name="formView" value="userForm" />   

       </bean>

    -->

5.controller中取出user

package caike; 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse; 

import jodd.bean.BeanUtil; 

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

 

public class MyController implements Controller {

 

       
public ModelAndView handleRequest(HttpServletRequest request,

                     HttpServletResponse response) 
throws Exception {

 

              User user 
= new User();

              BeanUtil.load(user, request);

              System.out.println(
"用户名:" + user.getUserName() + " 密码:" + user.getPassword());

              
return null;

       }

 

}

 

需要注意的地方:

表单中对应的名字namejavaBean里对应的属性名要相同。

<input type="text" name="userName"

              class="input" size="20">

public class User {

       private String userName;

.......

 参考:

http://www.blogjava.net/calvin/archive/2005/08/24/10914.html

 花钱的年华   简化Spring(4)--View层

posted on 2005-12-23 09:50 caike 阅读(3243) 评论(4)  编辑  收藏 所属分类: SpringFramework

评论

# re: 使用jodd form简化SpringMVC中Controller的配置 2005-12-23 10:05 江南白衣@ITO
yes,我们一直使用这个form,不过这个东西的一个缺点是对内嵌属性的支持不好,我动手修改了一下,见我的简化Spring系列--view篇.  回复  更多评论
  

# re: 使用jodd form简化SpringMVC中Controller的配置 2005-12-23 10:23 caike
呵呵,我当初好像也是从您那看到的,加上你的链接了。
另个有个问题请教一下,有时候用jodd 的BeanUtil.load(user, request);
load到的属性会是一个内存地址,这个问题你遇到过吗?最后无奈的用了request.getParameter();
:-(  回复  更多评论
  

# re: 使用jodd form简化SpringMVC中Controller的配置 2005-12-23 10:42 江南白衣@ITO
我不用Jodd的BeanUtil啊,改用Apache Commons了.  回复  更多评论
  

# re: 使用jodd form简化SpringMVC中Controller的配置 2006-08-25 13:03 樂樂
呵呵,我还有一点不明白的地方。所谓的绑定是注重什么地方?是一个编辑动作的时候原来数据的填充?还是保存动作页面数据提交到逻辑里面处理?

如果是后者,完成可以去掉jodd这样的标签,功能照样能实现。

我写了代码,但是运行不通过。并没有在编辑前填入数据,我的代码如下
控制器
public class SpringappController implements Controller {

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PriceIncrease price = new PriceIncrease();
price.setPercentage(100 + "");
ModelAndView mav = new ModelAndView("hello.jsp");
mav.addObject(price);
return mav;
}
}

页面
<form name="priceIncrease">
<jodd:form beans="priceIncrease" scopes="request">
<p><input type="text" name="percentage"/></p>
<input type="submit" value="change"/>
</jodd:form>
</form>  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: