<html:multibox property="strArray">
<bean:write name='db' property='id' />
</html:multibox>其中strArray为formbean的属性,应该是对应一String数组 String[] strArray;
要想让初始化选中,必须对strArray赋值.
假设db对应的model有id,name,password三个属性举个例子:
Public Class UserModel{
String id;
String name;
String password;
UserModel(String id,name,password){
this.id=id;
thid.name=name;
this.password=password;
}
String getId(){
...
}
...
}public clas UserForm extends ActionForm{
public String[] strArray=null;
...}赋值过程: List lt=new ArrayList();
lt.add(new UserModel("1","1","1"));
lt.add(new UserModel("2","2","2"));
lt.add(new UserModel("3","3","3"));
lt.add(new UserModel("4","4","4")); String[] strArray=new String[2];
strArray[0]="1";
strArray[1]="3";
form.setStrArray(strArray);
如果按我说的这样赋值,jsp写法就是你上面的。结果是第一行和第三行会自动选中。希望我说的对你有帮助,不懂的话可以去看看MutiboxTag的源代码,对自已有好处。
其实multibox,select里面的选中的定位都是一个道理,不过select里面的option不能硬编码到页面上,否则就不行!!个人观点,请指正!!
这里的<bean:write name='db' property='id' />就是中间的值^_^!!,表达不清楚
至于实现,其实 mzhanker(海风) 写的:
String[] strArray=new String[2];
strArray[0]="1";
strArray[1]="3";
form.setStrArray(strArray);String[] 的元素对应一个multibox,如果setter回去的String[] 元素的值等于对应的multibox的<bean:write name='db' property='id' />值,这个multibox就会打上钩。
import org.apache.struts.action.*;
import javax.servlet.http.*;public class checkActionForm extends ActionForm
{
private String strArray[]; public String[] getStrArray()
{
return strArray;
}
public void setStrArray(String strArray[])
{
this.strArray = strArray;
}
}以下是我程序执行的流程:
从JSP1中单击“查询”按钮----》进入Action1进行查询----》到JSP2显示全部数据信息,而且在每行信息前都有个复选框,这部分的代码就是我最上面写的,请问我应该在什么地方写让复选框选中的代码?是在Action1中吗,还是不知道该怎么作,正处在昏迷状态。
如String[] erid = new String[] {"1001","1035","1046"};
//注意上面的"1001","1035","1046"应该是db中id属性值,你事先就知道这些id值,或通过查询得到...
checkActionForm.setStrArray(erid );
..........................
//保存到request作用域,以在第二个页面使相应的复选框打勾
request.setAttribute("checkActionForm",checkActionForm);
return (mapping.findForward("success"));