<html:checkbox> 和 <s:checkbox> 的行为不同

问题描述 投票:0回答:1

我正在将复选框从 Struts 1 迁移到 Struts 2, 所以我改变了Struts 1的代码

<html:checkbox style="border:0px" property="eDir" disabled="true"/>

<s:checkbox theme="simple" style="border:0px" name="eDir" disabled="true"></s:checkbox>

但是即使该值是

true

,我也没有选中该复选框

下面是两者的html脚本

Struts 1 HTML:

<input type="checkbox" name="eDir2ColTrue" value="on" checked="checked" disabled="disabled" style="border:0px">

Struts 2 HTML:

<input type="checkbox" name="eDir2ColTrue" value="true" disabled="disabled" id="eDir2ColTrue" style="border:0px">
<input type="hidden" id="__checkbox_eDir2ColTrue" name="__checkbox_eDir2ColTrue" value="true" disabled="disabled">

该字段是布尔值。我从模型对象中获取其在操作类中的值为 true ..但仍然未经检查。

更新:

我尝试了这个,但它没有编译

<s:checkbox theme="simple" style="border:0px" key="eDir" disabled="true" <s:if test='${eDir}' >checked="checked"</s:if>></s:checkbox>

更新1:

我尝试了这个,但没有检查属性,因此尽管其值为 true,但没有检查它

<s:checkbox theme="simple" style="border:0px" key="eDir" disabled="true" value="%{#eDir}"></s:checkbox>

更新2:

当我打印时,即

<c:out value="${eDir}"></c:out>
,我得到的值为
true
但同样我把它放在 value 属性中,它仍然没有选中属性。

<s:checkbox theme="simple" style="border:0px" key="eDir" disabled="true" value="${eDir}"></s:checkbox>
jsp checkbox jakarta-ee struts2 struts-1
1个回答
1
投票

Struts2

checkbox
标签的行为与其在 Struts1 中的类似物不同。

并且,正如您所提到的,Struts2 为单个复选框创建两个

input
字段 - 一个用于
checked
值,另一个用于未选中的值。

然后通过其中一个被检查的。默认拦截器堆栈包括处理提交值的

checkbox
拦截器

如果您使用 Struts2 复选框并希望使用非布尔值的字段值,那么您应该使用

fieldValue
属性。

<s:checkbox theme="simple" cssStyle="border:0px" name="eDir" disabled="true" fieldValue="on"/>
© www.soinside.com 2019 - 2024. All rights reserved.