gpt4 book ai didi

来自 onChange 的 JSF 操作

转载 作者:行者123 更新时间:2023-12-03 21:06:25 25 4
gpt4 key购买 nike

我正在尝试使用 JSF 设置一个数据表,其中包含行总计框,该框将对行中任何框的行总计 onChange 求和。该行看起来像:

<tr id="input_row_1">
<td id="mondayInput1">
<h:inputText id="monday1" size="4" value="#{timesheet.monday1}" required="false" />
<!-- <input name="monday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
</td>
<td id="tuesdayInput1">
<h:inputText id="tuesday1" size="4" value="#{timesheet.tuesday1}" required="false" />
<!--<input name="tuesday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
</td>
<td id="wednesdayInput1">
<h:inputText id="wednesday1" size="4" value="#{timesheet.wednesday1}" required="false" />
<!--<input name="wednesday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
</td>
<td id="thursdayInput1">
<h:inputText id="thursday1" size="4" value="#{timesheet.thursday1}" required="false" />
<!--<input name="thursday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
</td>
<td id="fridayInput1">
<h:inputText id="friday1" size="4" value="#{timesheet.friday1}" required="false" />
<!--<input name="friday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
</td>
<td id="saturdayInput1">
<h:inputText id="saturday1" size="4" value="#{timesheet.saturday1}" required="false" />
<!--<input name="saturday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
</td>
<td id="sundayInput1">
<h:inputText id="sunday1" size="4" value="#{timesheet.sunday1}" required="false" />
<!--<input name="sunday1" class="smallInput" type="number" size="2" maxlength="4" min="0"/> -->
</td>
<td>
<h:inputText id="total1" size="4" value="#{timesheet.total1}" required="false" />
<!-- <input name="total1" id="total1" type="text" size="5" readonly="readonly" /> -->
</td>

所以我首先尝试添加 onChange="#{timesheet.setTotal1}"到当天条目,但 onChange 事件调用 javascript,而不是 java/JSF 代码。有人可以帮助更新总数吗?

编辑:
我已经接受了 BalusC 的回答,但还需要包括 event归因于 <f:ajax>标记以使其工作,就像这样
<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 表达式都将被视为值表达式。另见 tag documentation .

根据您的问题历史,您使用的是 JSF 2.x(请在以后的问题中明确提及确切的 JSF impl/version,因为与 JSF 1.x 相比,JSF 2.x 中的许多事情都做了不同的事情)。所以,只需使用新的 JSF 2.0 <f:ajax>标签应该这样做。

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

...

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


public void changeTotal1(AjaxBehaviorEvent event) {
total1 = ...;
}

关于来自 onChange 的 JSF 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11783043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com