beans
package com.windvalley.beans; public class UserInfo { private String userName; private String passWord; public void setUserName(String userName) { this.userName = userName; } public String getUserName() { return userName; } public void setPassWord(String passWord) { this.passWord = passWord; } public String getPassWord() { return passWord; } }
转换器
package com.windvalley.converter; import java.util.Map; import java.util.StringTokenizer; import com.windvalley.beans.UserInfo; import ognl.DefaultTypeConverter; public class UserinfoConverter extends DefaultTypeConverter { @Override public Object convertValue(Map context, Object value, Class toType) { // TODO Auto-generated method stub if (UserInfo.class == toType) //页面向后台对象转换 { String[] str = (String[])(value); String firstValue = str[0]; StringTokenizer st = new StringTokenizer(firstValue, ";"); String userName = st.nextToken(); String passWord = st.nextToken(); UserInfo userInfo = new UserInfo(); userInfo.setUserName(userName); userInfo.setPassWord(passWord); return userInfo; } else { return null; } } }
action
package com.windvalley.struts2; import com.opensymphony.xwork2.ActionSupport; import com.windvalley.beans.UserInfo; public class UserInfoAction extends ActionSupport { private UserInfo userInfo; public void setUserInfo(UserInfo userInfo) { this.userInfo = userInfo; } public UserInfo getUserInfo() { return userInfo; } @Override public String execute() throws Exception { // TODO Auto-generated method stub System.out.print(userInfo.getUserName()); System.out.print(userInfo.getPassWord()); return SUCCESS; } }
UserInfoAction-conversion.properties
userInfo=com.windvalley.converter.UserinfoConverter
Struct
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="struts2" extends="struts-default" namespace="/"> <action name="userinfo" class="com.windvalley.struts2.UserInfoAction" > <result name="success">/userinfo.jsp</result> </action> </package> </struts>
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>Struct2 Login</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="userinfo.action"> <h1>demo: userInfo</h1><br> userInfo: <input type="text" name="userinfo" /> <br> <input type="submit" value="submit"> </form> </body> </html>
用的dtd是2.1
报错为
java.lang.NullPointerException com.windvalley.struts2.UserInfoAction.execute(UserInfoAction.java:25)