0

我的 bean 没有触发我的 setter 方法,我不知道为什么。

这是xhtml的导入部分

    <script type="text/javascript">
    function updateTextInput(val, box) {
        //document.getElementById(box).value=val; 
    }
</script>
Min value: </td><td><input type="range" name="minVal"    min="-100" max="200" onchange="updateTextInput(this.value, 'minValInput');"/><h:inputText id="minValInput" value="#{myClass.minVal}"></h:inputText>
<h:form><h:commandButton value="#{myClass.status}" action="welcome">

这是我的豆子:

public class MyClass implements Serializable {
private static final long serialVersionUID = 1L;

private String status = "";
private int minVal = 0;

public String getStatus() {
  if(status == "") {
    status = "Start";
  }

  return status;
}

public void setStatus(String status) {
  this.status = status;
}

public int getMinVal() {
  System.out.println("*********************" + minVal);
  return minVal;
}

public void setMinVal(int minVal) {
  System.out.println("*********************" + minVal);
  this.minVal = minVal;
}

我的命令按钮 getter 和 setter 很好,但从我的输出中我可以告诉 minVal 的 getter 执行了两次,而 setter 从未执行过。我确定我在这里忽略了一些简单的东西,但无法弄清楚。有人看到我忽略的东西吗?

4

1 回答 1

3

这是因为你<h:inputText>不在一个<h:form>.


与具体问题无关,JSF 实用程序库OmniFaces允许您<h:inputText type="range">改用 JSF 组件库PrimeFaces提供了<p:slider>一个在 jQuery UI 外观中具有范围输入的功能。您可能会发现它比摆弄纯 HTML 和 JS 更容易。

也可以看看:

于 2013-09-17T19:53:25.103 回答