前段时间用struts1.3.8由于select这个标签用得比较多,经常需要设置默认值,于是请教google没有发现什么好文章解决这个问题。于是有了扩展原select标签的想法,首先看了一个这个标签源码,惊喜的发现这个标签有一个NAME属性可以用来做到这个东东地。
代码如下:
[code]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;
}
}[/code]
procType是一个选项,在刚进入这个页面需要有一个默认查询,因此需要设置procType这个条件的值,下面是在action中的设置部分:
[code]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");
}[/code]
在页面上将select的name属性设成form就搞定了,不过这么有一个问题就是每次执行一个action的时候就需要设置一次这段内容req.setAttribute("form",spf),由于我继承了LookupDispatchAction,所以将这部分重构成一个公共的块所以也就没有什么不方便的了,不知道对一些人是否有帮助,欢迎各位指正或者提出自己的解决办法。
代码如下:
[code]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;
}
}[/code]
procType是一个选项,在刚进入这个页面需要有一个默认查询,因此需要设置procType这个条件的值,下面是在action中的设置部分:
[code]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");
}[/code]
在页面上将select的name属性设成form就搞定了,不过这么有一个问题就是每次执行一个action的时候就需要设置一次这段内容req.setAttribute("form",spf),由于我继承了LookupDispatchAction,所以将这部分重构成一个公共的块所以也就没有什么不方便的了,不知道对一些人是否有帮助,欢迎各位指正或者提出自己的解决办法。