Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
来自onChange的JSF操作_Jsf_Input_Onchange - Fatal编程技术网

来自onChange的JSF操作

来自onChange的JSF操作,jsf,input,onchange,Jsf,Input,Onchange,我正试图用JSF建立一个数据表,其中包含行合计框,它将在行中任何一个框发生变化时求和行合计。该行看起来像: 因此,我首先尝试将onChange=“#{timesheet.setTotal1}”添加到day条目中,但onChange事件调用的是javascript,而不是java/JSF代码。有人能帮助更新总数吗 编辑: 我已经接受了BalusC的答案,但还需要在标记中包含事件属性以使其正常工作,如下所示 <h:inputText id="friday1" size="4" value

我正试图用JSF建立一个数据表,其中包含行合计框,它将在行中任何一个框发生变化时求和行合计。该行看起来像:


因此,我首先尝试将
onChange=“#{timesheet.setTotal1}”
添加到day条目中,但onChange事件调用的是javascript,而不是java/JSF代码。有人能帮助更新总数吗

编辑: 我已经接受了BalusC的答案,但还需要在
标记中包含
事件
属性以使其正常工作,如下所示

<h:inputText id="friday1" size="4" value="#{timesheet.friday1}" maxlength="4" required="false" >
    <f:ajax event="change" render="total1" listener="#{timesheet.updateTotal1}" />
</h:inputText>

事实上,
onchange
属性被视为纯文本HTML属性,它应该表示JavaScript
onchange
处理函数。这与“普通”HTML中的内容没有什么不同。该属性中的任何EL表达式都将被视为值表达式。另见

根据您的问题历史记录,您使用的是JSF2.x(请在将来的问题中明确提到确切的JSF impl/version,因为JSF2.x中的许多事情与JSF1.x不同)。因此,只要使用新的JSF2.0
标记就可以了

<h:inputText ...>
    <f:ajax listener="#{timesheet.changeTotal1}" render="idOfTotalComponent" />
</h:inputText>

...

<h:outputText id="idOfTotalComponent" value="#{timesheet.total1}" />

我这样做了,现在得到了:“javax.servlet.ServletException:在com.timesheet.timesheet类型上找不到属性'updateTotal1'”,好像updateTotal1是
上的属性而不是方法/操作,你的意思是?显然,
f:
taglib的XML名称空间根本没有被声明。整个
标记实际上会被视为“纯文本”(阅读:任何EL都会被视为一个值表达式)。但是它已经声明,我只是没有包含所有的html代码抱歉,到目前为止,在提供的代码/信息中看不到此问题的原因。SSCCE会有所帮助。
public void changeTotal1(AjaxBehaviorEvent event) {
    total1 = ...;
}