単一のチェックボックスでdisabledを適応させる
disabled属性はリクエストパラメータに含まれません。そのため、サーバー側からチェックされていないように見えます。
hiddenに値を持たせ、disabled属性の値を@PageScopeで持つ事でdisable属性の付いたcheckboxの値を扱う事が出来ます。
checkbox.html
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>checkbox disabled.</title> </head> <body> <form id="cform"> <input type="checkbox" id="c1" name="c1" disabled="disabled"/>c1<br/> <input type="checkbox" id="c2" name="c2" disabled="disabled"/>c2<br/> <input type="checkbox" id="c3" name="c3"/>c3<br/> <input type="submit"/> <input type="hidden" id="c1hidden"/> <input type="hidden" id="c2hidden"/> <input type="hidden" id="c3hidden"/> </form> </body> </html>
CheckboxPage.java
package example.teeda; import org.seasar.teeda.extension.annotation.scope.PageScope; public class CheckboxPage { public boolean c1; public boolean c2; public boolean c3; @PageScope public boolean c1Disabled; @PageScope public boolean c2Disabled; @PageScope public boolean c3Disabled; public Class initialize() { //チェックボックスの値 c1 = true; c2 = false; c3 = false; //チェックボックスのdisabledプロパティ c1Disabled = true; c2Disabled = true; c3Disabled = false; return null; } public Class prerender() { System.out.println("c1:" + c1); System.out.println("c2:" + c2); System.out.println("c3:" + c3); return null; } public boolean getC1hidden() { return c1; } public boolean getC2hidden() { return c2; } public boolean getC3hidden() { return c3; } public void setC1hidden(boolean b) { if (c1Disabled) { c1 = b; } } public void setC2hidden(boolean b) { if (c2Disabled) { c2 = b; } } public void setC3hidden(boolean b) { if (c3Disabled) { c3 = b; } } }