[JSF-25] m:disabledが動作しない Created: 2006-09-08  Updated: 2006-10-18  Resolved: 2006-10-18

Status: Resolved
Project: S2JSF
Component/s: None
Affects Version/s: 1.0.16, 1.1.0-beta-4
Fix Version/s: 1.1.0, 1.0.19

Type: Bug Priority: Major
Reporter: dot Assignee: yone
Resolution: Fixed Votes: 0
Labels: None


 Description   

1.0.14から1.0.16に切り替えたところ、m:disabledの動作が変わっているようだ。

例えば、
<input type="button" m:disabled="#

{isButtonDisabled}

" ...
のようにboolean型のisButtonDisabledを設定しておくと

1.0.14では
isButtonDisabled=falseの場合
disabled属性なし
isButtonDisabled=trueの場合
disabled="true"が属性に追加

1.0.16では
isButtonDisabled=falseの場合
disabled="false"が属性に追加
isButtonDisabled=trueの場合
disabled="true"が属性に追加

#isButtonDisabledの状態にかかわらず、そのままisButtonDisabledの値がセットされているような印象

となる。

しかし、実際に出力されたHTMLではdisabled属性は属性値の内容にかかわらず、部品が使用できなくなる(属性値がtrueであろうがfalseであろうが使用できない霞状態になる)ため、m:disabledに値をセットすると、基本的に使用不可状態になってしまう。

参考:
http://www.w3.org/TR/html4/interact/forms.html#adef-disabled



 Comments   
Comment by yone [ 2006-10-18 ]

対応完了しました。

Comment by yone [ 2006-10-18 ]

HtmlResponseWriter側で対応せず、S2JSFのRenderUtil側で対応するようにするので再オープンします。

Comment by yone [ 2006-10-17 ]

S2JSFもRenderUtil側に処理を入れたです。
どっちが良いかなぁ。

Comment by manhole [ 2006-10-17 ]

Teedaでは「デフォルト値はレンダしない」判定をRendererUtilで行っているのですが、
これを機にResponseWriterで判定するようにしますか?

TeedaだけならRendererUtilで良いのですけれど、S2JSFへの
バックポートを考えるとResponseWriterが良いのかなぁ、とか。

Comment by yone [ 2006-10-17 ]

Teeda側にポーティングしました。

Comment by yone [ 2006-10-16 ]

S2JSF1.0系は対応しました。

input type="button" において、action属性が無い場合は
org.seasar.jsf.selector.CommandButtonSelectorにおいて
isSelectableがtrueを返さない為に、
commandButtonのレンダラが使われない事が原因でした。
(commandButtonのレンダラは、disabled属性がtrueの場合にしか
レンダリングしないので)

dotさんが試されているHTMLには、推測ですがm:actionの指定がないものと思われます。
(m:actionを付ければ、1.0.14, 1.0.16ともに動作するはずです)
ただ、m:actionを指定しないボタンを使用する場面も多々あると思われるので対応しました。

Comment by yone [ 2006-10-16 ]

Teeda側のHtmlResponseWriterにもポーティングする必要あり。

Generated at Mon Dec 15 03:17:46 JST 2025 using Jira 10.6.1#10060001-sha1:a6461e220f274b29ced7ac9295492f2465fe5ef5.