我的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永远不会被执行。我敢肯定我在这里忽略了一些简单但却无法理解的事情。有人看到我忽略的东西吗?
答案 0 :(得分:3)
这是因为您的<h:inputText>
不在<h:form>
内。
无关,JSF实用程序库OmniFaces允许您使用<h:inputText type="range">
而JSF组件库PrimeFaces提供<p:slider>
在jQuery UI中有一个范围输入look'n'feel。您可能会发现使用简单的HTML和JS更容易。