2014-11-05 29 views
0

我正在將複選框從Struts1遷移到Struts2。 所以我改變了代碼Struts1的<html:複選框>和<s:checkbox>的行爲不同

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

​​

領域是布爾。我是獲取其在動作類值從模型object..but還是其選中爲真。

更新:

我試過,但它不是編譯

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

UPDATE1:

我試過,但沒有選中屬性所以它不是,儘管檢查其值爲真

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

UPDATE2:

當我打印,即<c:out value="${eDir}"></c:out>,我得到的值作爲true ,但我把它的價值屬性是相同的,但它仍然沒有一個checked屬性。

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

你是不是想出來的這個例子http://www.mkyong.com/struts2/struts-2-scheckbox-checkbox-example/ – 2014-11-05 09:08:20

回答

0

struts2 checkbox標記在Struts1中的行爲與其模擬行爲不同。正如你所提到的,Struts2爲單個複選框創建了兩個輸入字段 - 一個用於選中的值,另一個用於未選中的值。然後通過其中一個被檢查。攔截器的默認堆棧包括處理提交值的checkbox攔截器。如果您使用的是Struts2複選框,並且希望使用字段值不是布爾值,那麼您應該使用fieldValue屬性。

<s:checkbox theme="simple" cssStyle="border:0px" name="eDir" disabled="true" fieldValue="on"/> 
+0

字段的值是布爾,我得到的值在HTML作爲真實的,但仍然沒有檢查屬性 – sweety 2014-11-05 10:11:20

+0

它不能是布爾值,因爲生成了「value =」on。第二個是布爾值,因爲'value =「true」'。 – 2014-11-06 13:32:11

+0

當我明確地指定value =「true」時,它檢查checkbox.but同樣的事情,我做它與jstl ie value =「$ {eDir}」它沒有選中,當我打印在jsp $ {eDir}我是真的。可能是什麼問題? – sweety 2014-11-07 04:01:32

相關問題