【发布时间】:2015-07-07 16:09:51
【问题描述】:
我有一个带有许多问题的 JSP 页面和一个带有输入名称和值的 Map 的 ActionForm。
当我加载页面时,没有设置单选输入的值(选中属性),但复选框是。
表格定义:
<bean:define id="form" name="questionForm" type="com.example.QuestionForm"/>
无线电(jsp):
<html:radio property="<%=\"boolean(\" + questionBase + \"V\" + respLabel + \")\"%>" styleClass="pepperoni1" value="1" >Yes</html:radio>
<html:radio property="<%=\"boolean(\" + questionBase + \"V\" + respLabel + \")\"%>" styleClass="pepperoni0" value="0" >No</html:radio>
广播(html):
<input type="radio" class="pepperoni1" value="1" name="boolean(pepperoniVNever)">Yes
<input type="radio" class="pepperoni0" value="0" name="boolean(pepperoniVNever)">No
复选框(jsp):
<html:checkbox property="<%=\"boolean(\" + questionBase + \"V\" + respLabel + \")\"%>" styleClass="pepperoni" />
复选框(html):
<input type="checkbox" class="pepperoni" checked="checked" value="on" name="boolean(pepperoniV1)">
通过getBoolean/setBoolean 提交的页面加载/表单访问时,未设置选中的属性,但值不为空。
我的 ActionForm 类有这些可用的相关方法:
public void setValue(String key, String value) {
if (value != null)
values.put(key, value);
}
public String getValue(String key) {
return values.get(key);
}
public boolean getBoolean(String key) {
if (values.get(key) != null){
if(values.get(key).equalsIgnoreCase("1")){
return true;
} else if(values.get(key).equalsIgnoreCase("0")){
return false;
}
return "yes".equalsIgnoreCase(values.get(key));
}
return false;
}
public void setBoolean(String key, boolean value) {
if(value){
values.put(key, "yes");
}
}
我在 Ubuntu 14.04 上使用 struts 1.2.7、Hibernate 3、DisplayTag 1.0、OpenJDK 6 和 Tomcat 6。
更新
但是,以下无线电输入确实可以工作(正如您可以通过“checked”属性看到的那样:
无线电(jsp):
<html:radio property="<%=\"value(\" + questionBase + \"B)\"%>" value="No">No</html:radio>
<html:radio property="<%=\"value(\" + questionBase + \"B)\"%>" value="Yes">Yes</html:radio>
广播(html):
<input name="value(noteB)" value="Yes" checked="checked" type="radio">
<input name="value(noteB)" value="No" type="radio">
但在使用boolean 编辑输入以使用value 后,checked 属性仍未在加载时设置。
更新(2015 年 5 月 10 日)
在进行了 shinjw 建议的更改后,值已正确保存(这是一个单独的问题),但当 getBoolen 返回 true 时,某些单选按钮的选中属性仍未设置。
【问题讨论】:
-
能否请您发布使用单选按钮的语法?
-
添加了收音机和复选框的语法
-
在前端填充单选按钮后,您能否从 HTML 源代码中发布单选按钮的代码??
-
是价值问题吗?从你的措辞我看不出来。哪个值?未选中?
-
@DaveNewton 单选按钮(示例中的按钮)的值在提交时为空。复选框通过正常。
标签: java forms jsp jakarta-ee struts-1