<html:options>和<html:optionsCollection>标签使用

<html:options>和<html:optionsCollection>都要与<html:select>标签搭配使用

1.<html:options>标签

a.先写一个bean

 

package com.hsp.bean;

public class Student {
	
	private String key;//学号
	
	private String value;//姓名

	public Student(String key, String value) {
		super();
		this.key = key;
		this.value = value;
	}

	public String getKey() {
		return key;
	}

	public void setKey(String key) {
		this.key = key;
	}

	public String getValue() {
		return value;
	}

	public void setValue(String value) {
		this.value = value;
	}
}

 

b.在jsp页面中添加如下内容

 

<%
    ArrayList list = new ArrayList();
    list.add(new Student("201004070117","show value1"));
    list.add(new Student("201004070118","show value2"));
    list.add(new Student("201004070119","show value3"));
    list.add(new Student("201004070120","show value4"));
    pageContext.setAttribute("valuelist",list);
%>
<html:form action="/test.do">
  <html:select property="studentCode"> //property要与ActionForm中的属性匹配
    <%-- collection是集合的名字,存在于pageContext, request, session,application中
    key和value与student Bean 中的属性名字一样--%>
    <html:options collection="valueslist" property="key" labelProperty="value"/>
  </html:select>
</html:form>

 

 

2.<html:optionsCollection>

a.编写一个ActionForm

 

package com.hsp.form;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

import com.hsp.bean.Student;

public class RegisterForm extends ActionForm{
	private String username;
	
	private String password;
	
	private List<Student> areas;
	
	private String area;
	
	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	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;
	}
	
	//简单的数据验证
    @Override
    public ActionErrors validate(ActionMapping mapping,
    		HttpServletRequest request) {
    	ActionErrors actionErrors = new ActionErrors();
    	//ActionErrors继承了ActionMessages
    	if("".equals(username)){
    		actionErrors.add("errorUsername", new ActionError("error.username.blank"));
    	}
    	if("".equals(password)){
    		actionErrors.add("errorPassword", new ActionError("error.password.blank"));
    	}
    	if(0 == age){
    		actionErrors.add("errorAge", new ActionError("error.age.blank"));
    	}
    	return actionErrors;
    }

	public List<Student> getAreas() {
		return areas;
	}

	public void setAreas(List<Student> areas) {
		this.areas = areas;
	}

	public String getArea() {
		return area;
	}

	public void setArea(String area) {
		this.area = area;
	}

	
    
}

 

 

b.在action中添加

 

public class RegisterAction extends Action {
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
        RegisterForm registerForm = (RegisterForm)form;
        List<Student> areas = new ArrayList<Student>();
        areas.add(new Student("hubei", "1" ));
        areas.add(new Student("wuhan", "2"));
        areas.add(new Student("zhejiang","3"));
        registerForm.setAreas(areas);
        
	return mapping.findForward("success");
	}
}

c.在jsp页面中添加

<%-- <html:select name="registerForm" property="areatest" value="area">这样可以使areatest的默认值为registerForm对象中的area属性值 --%>
<html:select name="registerForm" property="area">
         <%--property是name所指定的对象registerForm中属性。如果name是一个集合,那么可以省略property的配置 --%>
         <html:optionsCollection name="registerForm" property="areas" value="value" label="key"/>
       </html:select>

猜你喜欢

转载自weigang-gao.iteye.com/blog/2108852
今日推荐