在struts的 checkbox 标签中怎样设才能让它的属性默认是选中呢?帮帮我谢谢! 在formBean中设置,好像把页面上checkbox的一个值赋给formbean中这个属性初始值。记不太清了,你试试看 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给formbean中相关的属性设置初值 checkde = true;上面写错了 checked = true;晕,还是写错了sorry <html:checkbox property="checkbox1" checked="true"> checked="true"没有这个属性,看来只能用JS或HTML去直接设置了 是的!没有 checked="true"这个属性的应该怎么做呢?上面的能帮我解决吗? <html:checkbox property="checkbox1" checked="true" value="true"/> <html:checkbox property="checkbox1" checked="true" value="true"/>this.setCheckBox1(true); struts的checkbox是没有checked属性滴,如果有需要,可以将源文件org.apache.struts.taglib.html.CheckboxTag 稍作修改,将checked属性加上去,还有一个方法,那就是写<input type="checkbox" name="" value="" checked> 给你个思路吧,其实我们可以这么想,当我们选中一个checkbox并提交时set进form里面的值是什么呢?那么我们是不是可以反过来做,将相应的值set进form里,然后转到有checkbox标签的页面,那么它必然是选中的状态。这种做法对单选框,复选框都是适用的特别是对复选框时,我们知道提交时返回的是一个String[],那么我们只要构造一个相应的String[],里面放入我们想要标识为选中的复选框的值,再set进form里,那么复选框对应的选项必为选中,且不论String[]里面值的顺序。这是我自己试验总结出来的,总之是屡试不爽!! 单纯独立的Action这样做还行,复合的action这么set会有影响的把,比如add 和edit复用的一个action 1、这个JSP没有经过action来forward的话,只能用JS来搞定了。2、这个JSP是经过action处理,即由action来forward到这个JSP的话,那么,你在这个JSP里的FormBean里设置一个checkbox1的默认值为你的值,这样,就会自动选中,即处理时会自动加上checked="checked"的。 Struts In Action中文版内容如下:10.4.2.8. 使用复选框数组许多应用需要使用大量的复选框来跟踪选项和选定的项目。为了帮助这种事情, Struts 提供了一个 multibox 控制。他十分便捷,但在第一次接触时可能难以理解。multibox 使HTML 可以方便处理复选框。如果复选框没有被选择,浏览器将不提交控件的任何值。如果复选框被选定,控件的名称和其值将被提交。这种行为却是ActionForm的reset 方法的原因。因为浏览器将不再表明一个复选框没有被选择,唯一的方法是重设所有的复选框,然后选择当前表现在请求中的选项。STRUTS TIP使用<html:multibox> 标签来将一系列复选框管理为一个数组multibox 控件设计来使用字符串数组。数组中的每个元素表示一个复选框。为选择一个复选框,在数组中添加一个标识复选框名字的字符串。要不选择一个复选框,将其从复选框中移除。 (看起来类似?)在传递值时, multibox 控件扫瞄数组中的元素看是否有匹配的项目。如果有,该复选框选中。如果没有,该复选框就保持未选择。如果用户选择复选框并且提交了表单,则该复选框的值就会包含在请求中。控制器就会将其加入到已选择(checked)的数组之中。如果复选框没有被选择,什么都不会提交,那么也不会有什么加入到数组中。如果ActionForm bean 被保持在会话上下文中,在请求之间,reset 方法需要减小数组长度为0(但非空)。在这个例子中<logic:iterate id="item" property="items"><html:multibox propety="selectedItems"><bean:write name="item"/></html:multibox><bean:write name="item"/></logic:iterate>每个复选框的标签位于items 属性之中。选定项目的列表位于一个名为selectedItems的数组之中。没有选定的项目不会出现在selectedItems 数组中。multibox 检查selectedItems数组获得当前的项目。如果出现,它就写一个选择的复选框。如果没出现,就写一个没选定的复选框。如果一个ActionForm 设置成这样private String[] selectedItems = {};private String[] items = {"UPS","FedEx","Airborne"};public String[] getSelectedItems() {return this.selectedItems;}public void setSelectedItems(String[] selectedItems) {this.selectedItems = selectedItems;}例子中的标签将产生3个复选框,分别标签为UPS,FedEx,和Airborne:<input type="checkbox" name="selectedItems" value="UPS">UPS<input type="checkbox" name="selectedItems" value="FedEx">FedEx<input type="checkbox" name="selectedItems" value="Airborne">Airborne开始, selectedItems 数组是空的。如果 UPS 被选择并提交,则等同于:private String[] selectedItems = {"UPS"};如果 UPS 和Airborne 都被选择,等同于private String[] selectedItems = {"UPS","Airborne"};并且,当复选框在加工时, 适当的元素将自动被 multibox 标签检测:<input type="checkbox" name="selectedItems"value="UPS" checked="checked">UPS<input type="checkbox" name="selectedItems"value="FedEx">FedEx<input type="checkbox" name="selectedItems"value="Airborne" checked="checked">Airborne 我试了很多方法就只有JS可以做得好!其它都有问题!在ActionForm也不行!虽然可以选中它可以值不会变!不知道怎样才可以直接的设置一下! String[] defaultColors = { "Orange", "Yellow" }; MultiboxActionForm multiboxForm = (MultiboxActionForm) form; multiboxForm.setColors(defaultColors);用這個把默認選中的傳進multiboxForm中即可,所有元素構成數組colors,用request.setAttribute傳進,然後用上面那位朋友說的<logic:iterate id="color" property="colors"><html:multibox propety="selectedItems"><bean:write name="item"/></html:multibox><bean:write name="item"/></logic:iterate>multiboxForm其中變量為String[];,包含許多String,比如説傳入orange和yellow,那麽頁面上的這兩個checkbox即被選中,如果還有其它元素,例如blue,black,white,就不會被選中。所有這5個元素是構造成數組,然後用request.setAttribute()傳入頁面的。配置文件裏要寫<form-bean name="multiboxForm" type="MultiboxActionForm(裝默認選中數組的類名)"/>我覺得multibox不是很好用,因爲沒有那麽多條件來把它們構造成數組,也能用arraylist等,但是我沒試驗過不知道我是否說得明白 遇到這種問題我都是用logic:equals比較一下,是的話就加個checked,或者直接在頁面裏寫java代碼,用struts標簽太麻煩。所以我說struts並不好用 checked设置或返回 checkbox 是否应被选中。 关于dwr长连接的问题 散分 servlet问题 ibatis,2个表查询,需要详细解答! struts1.2中的validate框架验证问题 表的列数不确定该怎么样设计 JBuilder2005的问题 JAVAMAIL怎样通过设置代理来收取、发送邮件,高分求解!问题解了就结贴,急!!! 关于容器管理的entity bean如何处理自动增长id? 哪位解释一下jboss的目录结构啊 高分请大家推荐好的基于Java的角色权限管理系统,谢谢! 跳楼求助spring+hibernate配置问题
上面写错了
晕,还是写错了
sorry
this.setCheckBox1(true);
许多应用需要使用大量的复选框来跟踪选项和选定的项目。为了帮助这种事情, Struts 提
供了一个 multibox 控制。他十分便捷,但在第一次接触时可能难以理解。multibox 使
HTML 可以方便处理复选框。如果复选框没有被选择,浏览器将不提交控件的任何值。
如果复选框被选定,控件的名称和其值将被提交。这种行为却是ActionForm的reset 方法
的原因。因为浏览器将不再表明一个复选框没有被选择,唯一的方法是重设所有的复选框,
然后选择当前表现在请求中的选项。
STRUTS TIP
使用<html:multibox> 标签来将一系列复选框管理为一个数组
multibox 控件设计来使用字符串数组。数组中的每个元素表示一个复选框。为选择一个复选
框,在数组中添加一个标识复选框名字的字符串。要不选择一个复选框,将其从复选框中移
除。 (看起来类似?)
在传递值时, multibox 控件扫瞄数组中的元素看是否有匹配的项目。如果有,该复选框
选中。如果没有,该复选框就保持未选择。
如果用户选择复选框并且提交了表单,则该复选框的值就会包含在请求中。控制器就会将其
加入到已选择(checked)的数组之中。如果复选框没有被选择,什么都不会提交,那么也
不会有什么加入到数组中。如果ActionForm bean 被保持在会话上下文中,在请求之间,
reset 方法需要减小数组长度为0(但非空)。
在这个例子中
<logic:iterate id="item" property="items">
<html:multibox propety="selectedItems">
<bean:write name="item"/>
</html:multibox>
<bean:write name="item"/>
</logic:iterate>
每个复选框的标签位于items 属性之中。选定项目的列表位于一个名为selectedItems的
数组之中。没有选定的项目不会出现在selectedItems 数组中。multibox 检查selectedItems
数组获得当前的项目。如果出现,它就写一个选择的复选框。如果没出现,就写一个没选定的
复选框。
如果一个ActionForm 设置成这样
private String[] selectedItems = {};
private String[] items = {"UPS","FedEx","Airborne"};
public String[] getSelectedItems() {
return this.selectedItems;
}
public void setSelectedItems(String[] selectedItems) {
this.selectedItems = selectedItems;
}
例子中的标签将产生3个复选框,分别标签为UPS,FedEx,和Airborne:
<input type="checkbox" name="selectedItems" value="UPS">UPS
<input type="checkbox" name="selectedItems" value="FedEx">FedEx
<input type="checkbox" name="selectedItems" value="Airborne">Airborne
开始, selectedItems 数组是空的。如果 UPS 被选择并提交,则等同于:
private String[] selectedItems = {"UPS"};
如果 UPS 和Airborne 都被选择,等同于
private String[] selectedItems = {"UPS","Airborne"};
并且,当复选框在加工时, 适当的元素将自动被 multibox 标签检测:
<input type="checkbox" name="selectedItems"
value="UPS" checked="checked">UPS
<input type="checkbox" name="selectedItems"
value="FedEx">FedEx
<input type="checkbox" name="selectedItems"
value="Airborne" checked="checked">Airborne
在ActionForm也不行!虽然可以选中它可以值不会变!
不知道怎样才可以直接的设置一下!
MultiboxActionForm multiboxForm = (MultiboxActionForm) form;
multiboxForm.setColors(defaultColors);
用這個把默認選中的傳進multiboxForm中即可,所有元素構成數組colors,用request.setAttribute傳進,然後用上面那位朋友說的
<logic:iterate id="color" property="colors">
<html:multibox propety="selectedItems">
<bean:write name="item"/>
</html:multibox>
<bean:write name="item"/>
</logic:iterate>multiboxForm其中變量為String[];,包含許多String,比如説傳入orange和yellow,那麽頁面上的這兩個checkbox即被選中,如果還有其它元素,例如blue,black,white,就不會被選中。
所有這5個元素是構造成數組,然後用request.setAttribute()傳入頁面的。
配置文件裏要寫<form-bean name="multiboxForm" type="MultiboxActionForm(裝默認選中數組的類名)"/>
我覺得multibox不是很好用,因爲沒有那麽多條件來把它們構造成數組,也能用arraylist等,但是我沒試驗過
不知道我是否說得明白
所以我說struts並不好用
设置或返回 checkbox 是否应被选中。