关于struts select标签的默认值的问题

阅读更多
   前段时间用struts1.3.8由于select这个标签用得比较多,经常需要设置默认值,于是请教google没有发现什么好文章解决这个问题。于是有了扩展原select标签的想法,首先看了一个这个标签源码,惊喜的发现这个标签有一个NAME属性可以用来做到这个东东地。
   代码如下:
package com.nl.tsp.web.form;

import org.apache.struts.action.ActionForm;

/**
 * @description 
 * @author Jason Tseng
 * @date 2007-6-4
 * 
 */
public class SysProcForm extends ActionForm {
	/**
	 * 进程名
	 * 
	 */
	private String procName;

	/**
	 * 进程类型
	 * 
	 */
	private String procType;

	/**
	 * 进程个数
	 * 
	 */
	private Integer procCount;

	/**
	 * 进程控制方式
	 * 
	 */
	private String procCtrlType;

	/**
	 * 进程启动参数
	 * 
	 */
	private String procStarPara;

	/**
	 * 生效标志
	 * 
	 */
	private String activeFlag;
	
	/**
	 * 选中ITEM
	 */
	private String selectedIdx;

	public String getActiveFlag() {
		return activeFlag;
	}

	public Integer getProcCount() {
		return procCount;
	}

	public String getProcCtrlType() {
		return procCtrlType;
	}

	public String getProcName() {
		if (procName != null && procName.trim().length() < 1) {
			return null;
		}
		return procName;
	}

	public String getProcStarPara() {
		return procStarPara;
	}

	public String getProcType() {
		if (procType != null && procType.trim().length() < 1) {
			return null;
		}
		return procType;
	}

	public void setActiveFlag(String activeFlag) {
		this.activeFlag = activeFlag;
	}

	public void setProcCount(Integer procCount) {
		this.procCount = procCount;
	}

	public void setProcCtrlType(String procCtrlType) {
		this.procCtrlType = procCtrlType;
	}

	public void setProcName(String procName) {
		this.procName = procName;
	}

	public void setProcStarPara(String procStarPara) {
		this.procStarPara = procStarPara;
	}

	public void setProcType(String procType) {
		this.procType = procType;
	}

	public String getSelectedIdx() {
		return selectedIdx;
	}

	public void setSelectedIdx(String selectedIdx) {
		this.selectedIdx = selectedIdx;
	}
}

procType是一个选项,在刚进入这个页面需要有一个默认查询,因此需要设置procType这个条件的值,下面是在action中的设置部分:
public ActionForward begin(ActionMapping mapping, ActionForm form, HttpServletRequest req,
			HttpServletResponse resp) throws Exception {
                  SysProcForm spf= (SysProcForm ) form;
                  if (spf == null) {
			spf= new SysProcForm ();
		}
                   spf.setProcType("xxxx");
                   req.setAttribute("form",spf);
		return mapping.findForward("sprentry");
	}

在页面上将select的name属性设成form就搞定了,不过这么有一个问题就是每次执行一个action的时候就需要设置一次这段内容req.setAttribute("form",spf),由于我继承了LookupDispatchAction,所以将这部分重构成一个公共的块所以也就没有什么不方便的了,不知道对一些人是否有帮助,欢迎各位指正或者提出自己的解决办法。

你可能感兴趣的:(Struts,Google,Apache,Web)