Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 表单提交时未调用JSF valuechangelistener_Java_Javascript_Jsf - Fatal编程技术网

Java 表单提交时未调用JSF valuechangelistener

Java 表单提交时未调用JSF valuechangelistener,java,javascript,jsf,Java,Javascript,Jsf,我看了其他类似的帖子,但没有一篇有用。这是我的密码: <script type="text/javascript"> function submit1() { document.forms["form"].submit(); } </script> <form name="form"> <h:selectOneMenu value="#{bean.categorySelected}" onchange="submit1()" valueCha

我看了其他类似的帖子,但没有一篇有用。这是我的密码:

<script  type="text/javascript">
function submit1()
{
document.forms["form"].submit();
}
</script>

<form name="form">
    <h:selectOneMenu value="#{bean.categorySelected}" onchange="submit1()"
valueChangeListener="#{bean.changeCategory}">
    <f:selectItem itemLabel="Select a Category" itemValue="null" />
    <f:selectItems value="#{bean.items}" />
</h:selectOneMenu>
</form>

函数submit1()
{
document.forms[“form”].submit();
}

当我从下拉列表中选择时,它只会重新加载组件。这意味着调用了bean.getItems,但没有调用value或valueChangeListener,我的日志表明它只经历了阶段1和阶段6。如果我没记错的话,除非提交表格,否则第2-5阶段不会启动。我做错了什么?

您需要一个完整的JSF
组件,而不是一个普通的HTML
元素。默认情况下,在提交当前URL上的GET请求时,将触发一个没有任何
方法
操作
属性的纯HTML
元素。这正好证实了你所看到的行为。这就像你只是在刷新F5当前请求的页面

因此,请按如下方式进行修复:


(请注意,附加的JS函数是不必要的)


将生成一个
以及至少两个特定于JSF的隐藏输入字段,用于标识当前表单和视图状态(在修复JSF代码后检查生成的HTML输出中的差异)。POST请求和两个隐藏字段的组合使JSF能够知道它必须处理什么视图、必须处理什么形式以及必须调用什么侦听器和操作。

你说得对,它现在可以按你说的那样工作了。谢谢你全面(快速)的回答!