关于添加一个学生,学生修改自己信息,学生要上传一个附件(交作业附件),都要用到表单,
特别是带上传file控件的表单,反正都跟学生有关,并且反正,struts1.2上传要定义一个Form extends ActionForm
那就干脆把这个Form取名 StudentForm extends ActionForm
public class StudentForm extends ActionForm {
/**
* 关于学生的表单都到这里
*/
private static final long serialVersionUID = 1L;
private FormFile homeworkFile;
private String stuname;
private String username;
private String password;
private String email;//邮箱
private Byte state = 0;//学员状态,0为正常,1为休学
getter/setter方法。。。。。
}
struts-config.xml里面:
<form-bean name="StudentForm" type="com.cn.action.StudentForm">
<form-property name="username" type="java.lang.String"></form-property>
<form-property name="password" type="java.lang.String"></form-property>
<form-property name="stuname" type="java.lang.String"></form-property>
<form-property name="email" type="java.lang.String"></form-property>
</form-bean>
<action path="/studentInfo" name="StudentForm"
parameter="action" type="com.cn.action.StudentAction">
</action>
StudentAction extends DispatchAction类中:
添加一个学生
public ActionForward addAStudent(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
StudentForm studentForm = (StudentForm) form;
String username = studentForm.getUsername();
String password = studentForm.getPassword();
String stuname = studentForm.getStuname();
.............................
}
修改信息的方法,用BeanUtils.getProperty(form, "xxx");也可以取表单内容,可能是因为本身就是
StudentForm extends ActionForm,都是兼容的
/**
* 学生修改信息更新
*
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
public ActionForward updateTheStudent(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
String username = null;
String password = null;
String email = null;
try {
username = BeanUtils.getProperty(form, "username");
password = BeanUtils.getProperty(form, "password");
email = BeanUtils.getProperty(form, "email");
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
...................
}
/**
* 上传作业
*
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
public ActionForward uploadHomework(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
StudentForm myForm = (StudentForm) form;
FormFile fileobj = myForm.getHomeworkFile();
// 底下都是为了拼装文件名:姓名_项目名.rar
// 这个主要是利用它fileName得到后缀名
String fileName = fileobj.getFileName();
.................................
}
我想要说的是,刚发现的:
在addAStudent()方法中,两种方法 得到表单控件内容都可以,
第一种:
StudentForm studentForm = (StudentForm) form;
String username = studentForm.getUsername();
String password = studentForm.getPassword();
String stuname = studentForm.getStuname();
第二种:
//用(StudentForm) form;可以取
//但用BeanUtils.getProperty取可以吗
String username = null;
String password = null;
String stuname = null;
try {
username = BeanUtils.getProperty(form, "username");
password = BeanUtils.getProperty(form, "password");
stuname = BeanUtils.getProperty(form, "stuname");
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
System.out.println("用BeanUtils.getProperty取可以吗?"+username+password+stuname);
空置台:用BeanUtils.getProperty取可以吗?xiaoluo 123 小罗
结论:对于表单的普通控件内容,
如果你想用第一种,那就在StudentForm extends ActionForm中,定义出属性,
private String stuname;
private String username;
private String password;
private String email;//邮箱
在Action中要用就直接getter取
StudentForm studentForm = (StudentForm) form;
String username = studentForm.getUsername();
String password = studentForm.getPassword();
String stuname = studentForm.getStuname();
如果用第二种那就在struts-config.xml中一样都不能少,
在Action中要用就 BeanUtils.getProperty(form, "xxx");
<form-bean name="StudentForm" type="com.cn.action.StudentForm">
<form-property name="username" type="java.lang.String"></form-property>
<form-property name="password" type="java.lang.String"></form-property>
<form-property name="stuname" type="java.lang.String"></form-property>
<form-property name="email" type="java.lang.String"></form-property>
</form-bean>