表单取值中,上传控件的From类,也可以取普通控件的值,还不打扰BeanUtils.getProperty也能取值

关于添加一个学生,学生修改自己信息,学生要上传一个附件(交作业附件),都要用到表单,

特别是带上传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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值