关于添加一个学生,学生修改自己信息,学生要上传一个附件(交作业附件),都要用到表单,
特别是带上传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>