Actionのプロパティ値をm:renderedの条件に指定した場合、中に入っているinputの値が取れない
お題通りとなりますが...m:rendered関係で困っております。
#もしかしてDtoの値で評価しないとダメって結論だったりしますか?
この例では、ある条件にしたがって、チェックボックスを出したり出さなかったりしつつ、
でもPOSTされた値を取得して表示するものです。
public class HogeDto {
private boolean check;public boolean isCheck() {
return check;
}public void setCheck(boolean check) {
this.check = check;
}
}
- Action
■Action
package hoge.action.impl;import hoge.action.HogeAction;
//interfaceは記載省略
public class HogeActionImpl implements HogeAction {
private String flag = "0";
public String initialize() {
return null;
}
//Action Method
public String goCheck() {
flag = "1";
return null;
}
//Action Method
public String goReset() {
flag = "0";
return null;
}//setter/getter
public String getFlag() {
return flag;
}public void setFlag(String flag) {
this.flag = flag;
}
}
- HTML
■HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html lang="ja" xmlns:m="http://www.seasar.org/maya"
m:action="#{hogeAction.initialize}" >
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-31j" />
<style type="text/css">
body {
font-family: verdana, sans-serif;
}
</style>
</head><body>
<form name="hogeForm" id="hogeForm">
<!-- Actionのプロパティ値で判断 -->
<span m:rendered="#{flag == '0'}">
<input type="checkbox" id="check" m:value="#{hogeDto.check}" /><label for="hogeForm:check">チェック</label>
</span>
<p>
hogeDto.check[<span m:value="#{hogeDto.check}"/>]
</p>
<p>flag[<span m:value="#{flag}"/>]</p>
<input type="button" m:action="#{hogeAction.goCheck}" value="goCheck" />
<input type="button" m:action="#{hogeAction.goReset}" value="goReset" /></form>
</body>
</html>
ここで、
<span m:rendered="#{flag == '0'}">
<input type="checkbox" id="check" m:value="#{hogeDto.check}" /><label for="hogeForm:check">チェック</label>
</span>
の部分なのですが、flag=='0'でcheckboxが表示されたあと、ポストバックした際にcheckboxの値が取れていないようなのです。
※checkboxの値が常にfalseになってしまいます。
ちなみにm:renderedの条件(表示をする/しない)は問題なく動作しています。もちろん、条件を外せば問題なく動きます。
以下のようなrendere条件では正常に動作します。
<span m:rendered="#{0 == 0}">
<span m:rendered="#{hogeDto != null}">
#やっぱりDtoの値で評価しないとダメって結論だったりしますか?