Struts2里面的 将页面数据自动填充到对象中是如何实现的?
最近想做一个demo,demo可以自动接收页面中提交的数据,并且将这些数据自动填充到对象的对应属,就和struts2里自己将表单 数据填充到对象一样,主要过程已经想清楚了,就是在一个地方 被卡住,就 是数据类型转换的时候,比如一个Person对象有String name,int age属性,从页面获取的数据不能直接设置到age里,报错说的是不是能将string 类型数据直接设置给int类型,代码如下 :
package com.whcss.demo.reg; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Type; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 注册 servelt * * @author com.whcss.wangkai * */ public class RegServlet extends HttpServlet { private static final long serialVersionUID = -5653561698430057918L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doGet(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // String username = req.getParameter("username"); // String password = req.getParameter("password"); // String name = req.getParameter("name"); // String age = req.getParameter("age"); // Map<String,Object> params = req.getParameterMap(); // // for(String key : params.keySet()){ // req.setAttribute(key, req.getParameter(key)); // } // req.setAttribute("username", username); // req.setAttribute("name", name); getPerson(req); String path = "/servlet/result_servlet01.jsp" ; req.getRequestDispatcher(path).forward(req, resp); } /** * 接收客户端数据,将数据设置到person中 */ protected void getPerson(HttpServletRequest req) { Class<?> clazz = Person.class ; Person per = new Person() ; Map<String,Object> params = req.getParameterMap(); for(String key : params.keySet()){ try { Field field = clazz.getDeclaredField(key); Class<?> type = field.getType(); //字段类型 System.out.println(type.getName()); field.setAccessible(true); Object value = req.getParameter(key); if(value !=null){ field.set(per, value); } field.setAccessible(false); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } req.setAttribute(key, req.getParameter(key)); } req.setAttribute("person", per); } } package com.whcss.demo.reg; public class Person { private String username ; private String password ; private String name; private int age; public Person(){} public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ String str ="姓名:%s,用户名:%s,年龄:%s,密码:%s" ; return String.format(str, name,username,age,password); } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
用的BeanUtils,开源的,你可以看看源码,没记错的话,struts里面有用这个包。
用的BeanUtils,开源的,你可以看看源码,没记错的话,struts里面有用这个包。
用的BeanUtils,开源的,你可以看看源码,没记错的话,struts里面有用这个包。
他是想实现Struts2里面的那功能
@Andre.Z: 想做一个DEMO实现struts2里 的对象自填充功能
Struts2 ? 那你怎么还自己写Servlet ? 难道你不该写Action 吗“?