JSF action de onChange
Je vais essayer de mettre en place un tableau de données avec la JSF qui a des boîtes pour la ligne total sera la somme de la ligne du total onChange de n'importe quelle case de la ligne. la ligne ressemble:
<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>
j'ai donc d'abord essayé d'ajouter onChange="#{timesheet.setTotal1}"
pour les inscriptions le jour, mais l'événement onChange appels javascript, pas java /JSF code. Quelqu'un peut-il aider à obtenir le montant total de la mise à jour?
EDIT:
J'ai accepté BalusC de la réponse mais il faut aussi inclure la event
attribut à la <f:ajax>
balise pour le faire fonctionner, comme
<h:inputText id="friday1" size="4" value="#{timesheet.friday1}" maxlength="4" required="false" >
<f:ajax event="change" render="total1" listener="#{timesheet.updateTotal1}" />
</h:inputText>
OriginalL'auteur Jake Long | 2012-08-02
Vous devez vous connecter pour publier un commentaire.
En effet, la
onchange
attribut est juste traitée comme un simple texte de l'attribut HTML qui devraient représenter un JavaScriptonchange
fonction de gestionnaire. Ce n'est pas différent de "plain vanilla" HTML. Tout EL expressions dans cet attribut va juste être traités comme des expressions de valeur. Voir aussi la tag de la documentation.Basé sur votre question de l'histoire, vous êtes en utilisant JSF 2.x (veuillez le mentionner explicitement l'exacte JSF impl/version à l'avenir des questions que beaucoup de choses sont faites différemment dans JSF 2.x par rapport à JSF 1.x). Donc, tout en utilisant la nouvelle JSF 2.0
<f:ajax>
balise devrait le faire.avec
Sur le
<f:ajax listener>
, tu veux dire? Apparemment, l'espace de noms XML de laf:
taglib n'a pas été déclarés. L'ensemble de la<f:xxx>
balise serait alors en effet d'être traités en "texte brut" (lire: tout EL est alors traité comme une expression de valeur).Mais il a été déclaré, je n'ai tout simplement pas inclure tout le code html
Désolé, la cause de ce problème n'est pas visible dans le code/les informations fournies jusqu'à présent. Un SSCCE serait utile.
OriginalL'auteur BalusC