0

我正在将复选框从 Struts1 迁移到 Struts2。所以我从 Struts1 更改了代码

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

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

但即使值为true

下面是两者的html脚本

Struts1 html:

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

Struts2 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:

我试过了,但没有检查属性,所以尽管它的值为真,但它没有被检查

<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>
4

1 回答 1

0

Struts2checkbox标记的行为与其在 Struts1 中的模拟不同。

而且,正如您所提到的,Struts2input为单个复选框创建了两个字段 - 一个用于checked值,另一个用于未选中的值。

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

如果您正在使用 Struts2 复选框并且希望使用字段值不是布尔值,那么您应该使用fieldValue属性。

<s:checkbox theme="simple" cssStyle="border:0px" name="eDir" disabled="true" fieldValue="on"/>
于 2014-11-05T09:45:56.213 回答