<;s:复选框>;不是以struts2形式自动填充

<;s:复选框>;不是以struts2形式自动填充,struts2,Struts2,请任何人解释一下如何使用复选框拦截器。这里我的问题是,如果在查看来自数据库的详细信息的同时,以其他方式“N”选中复选框,则必须将复选框值保存为“Y”。如果复选框的值为“Y”,则必须选中复选框,否则不应选中它。在getter setter put转换代码中 私有字符串mycheckbox; 公共字符串execute(){ //在行动中,你总是会得到“Y”或“N” System.out.println(“运行中的mycheckbox:+mycheckbox”); 回归成功; } 公共void set

请任何人解释一下如何使用复选框拦截器。这里我的问题是,如果在查看来自数据库的详细信息的同时,以其他方式“N”选中复选框,则必须将复选框值保存为“Y”。如果复选框的值为“Y”,则必须选中复选框,否则不应选中它。

在getter setter put转换代码中

私有字符串mycheckbox;
公共字符串execute(){
//在行动中,你总是会得到“Y”或“N”
System.out.println(“运行中的mycheckbox:+mycheckbox”);
回归成功;
}
公共void setMycheckbox(字符串mycheckbox){
if(mycheckbox.equalsIgnoreCase(“false”))
{
这个.mycheckbox=“N”;
}
其他的
{
this.mycheckbox=“Y”;
}
}
公共字符串getMycheckbox(){
if(mycheckbox.equalsIgnoreCase(“N”))
{
//在JSP中,您总是会得到正确或错误的答案
this.mycheckbox=“false”;
}
其他的
{
this.mycheckbox=“true”;
}
返回mycheckbox;
}
在JSP中


因此,在实际操作中,您将获得
'Y'
'N'
,但对于struts标记,它将使用
true
false
。如果存在
'Y'
,则选中该复选框

因此上述解决方案可以解决您的问题。

您也可以对拦截器使用相同的逻辑,但我认为getter setter是最简单的方法,因为您将强制使用getter setter

CheckboxInterceptor是如何工作的??? 当你写作时


生成的Html是


现在您可以看到它生成的隐藏字段。因此,您将在复选框的value=“Y”中获得字段值Y

案例1:如果在mycheckbox变量的操作中选中了复选框

在操作中mycheckbox:Y(因为
中的value=“Y”)

如果未选中复选框

在操作中mycheckbox:false

案例2:但如果未提交此复选框

CheckBoxInterceptor
将出现在图片中,它将使用
\u checkbox
前缀扫描参数,并执行操作->它将值设置为false,因此即使隐藏字段中没有值,操作也将获得一些值,即false

因此,如果选择
fieldValue
,它将返回到操作变量,如果未选择,它将设置为false

在这里,您可以指定
setUncheckedValue(“N”)
这样您就可以在
\uuuucheckbox\umycheckbox
中获得
N
,但不能在
mycheckbox
变量中获得
mycheckbox
将仅返回false


但有一件事需要记住,复选框值仅转换为布尔值,因此即使您将设置此值,您将在
\uuuuucheckbox\umycheckbox
中获得值“N”,而不是在
mycheckbox

中。您是否尝试过?如果出现错误,请发布它。