[Seasar-user:2811] [S2JSF]session コンポーネントがformのdisabled指定で破壊

O.K.U. oku
2005年 11月 11日 (金) 14:25:03 JST


O.K.U.です。いつもお世話になっております。

早速ですが、instance="session" としたコンポーネントのデータを
form の input タグで disbaled指定して表示すると、
表示そのものは元々の値が表示されるのですが、
その後、submit するとそのデータが壊されてしまいます。

表示している元々の内容にかかわらず、セッターが null で
呼ばれてしまうのが原因ですが、これは仕様でしょうか?

また、仕様だとすると回避する方法はありませんでしょうか?

セッターが呼ばれないか、せめて表示している値で再度
呼ばれればいいのですが、null で呼ばれて壊されてしまうと
困ってしまいます。

− hoge.html −−−−−−−−−−
<html xmlns:m="http://www.seasar.org/maya">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-31j" />
<title>Hoge</title>
</head>
<body>
<form>
  <input type="text" disabled="true" m:value="#{hogeDto.hoge}"/>
  <input type="submit" value="submit"/>
</form>
</body>
</html>

− hoge.java −−−−−−−−−−
package examples.jsf.dto;

public class HogeDto {
        private String hoge;
        public String  getHoge() {
                return hoge;
        }
        public void setHoge(String hoge) {
            System.out.println(hoge);
            this.hoge = hoge;
        }
}

− hoge.dicon −−−−−−−−−−
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
        "http://www.seasar.org/dtd/components21.dtd">
<components>
        <component name="hogeDto" class="examples.jsf.dto.HogeDto" instance="session">
                <property name="hoge">"foo"</property>
        </component>
</components>




Seasar-user メーリングリストの案内