JSF 2没有解雇setter

时间:2013-09-17 19:32:03

标签: jsf jsf-2

我的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永远不会被执行。我敢肯定我在这里忽略了一些简单但却无法理解的事情。有人看到我忽略的东西吗?

1 个答案:

答案 0 :(得分:3)

这是因为您的<h:inputText>不在<h:form>内。


对于具体问题

无关,JSF实用程序库OmniFaces允许您使用<h:inputText type="range">而JSF组件库PrimeFaces提供<p:slider>在jQuery UI中有一个范围输入look'n'feel。您可能会发现使用简单的HTML和JS更容易。

另见: