2012-08-02 21 views
5

JSF ile satırdaki herhangi bir kutunun satır satır toplamını toplayacak satır toplamları için kutular içeren bir veri tablosu oluşturmaya çalışıyorum. onChange JSF eylemi

<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> 
yüzden ilk gün girişlerine onChange="#{timesheet.setTotal1}" eklemek çalıştı ama değiştiğinde olay javascript, değil java/JSF kodunu çağırır: gibi satır görünüyor. Birisi toplam güncellemeye yardımcı olabilir mi?

DÜZENLEME: Ben BalusC cevabını kabul etmiş, ancak gerekli ayrıca Nitekim bu yüzden

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

cevap

6

gibi, işe almak için <f:ajax> etikete event özelliğini eklemeniz var, onchange nitelik sadece ova olarak kabul edilir JavaScript onchange işleyici işlevini temsil eden metin HTML özniteliği. Bu, "düz vanilya" HTML’den farklı değil. Bu öznitedeki herhangi bir EL ifadesi sadece değer ifadeleri olarak ele alınacaktır. Ayrıca tag documentation'a da bakınız.

Soru geçmişinize dayanarak, JSF 2.x kullanıyorsunuz (JSF 1.x ile karşılaştırıldığında JSF 2.x'te çok farklı şeyler yapıldığı için gelecekteki sorularda tam JSF impl/sürümünden açıkça bahsedin) . Yani, sadece yeni JSF 2.0 <f:ajax> etiketini kullanarak yapmalısınız.

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

ile

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

Bunu yaptım ve şimdi alıyorum: "javax.servlet.ServletException: Mülkiyet 'updateTotal1' türü com.timesheet.Timesheet bulunmayan" updateTotal1 bir özelliktir sanki Bir yöntem/eylem yerine –

+0

'' üzerinde, demek istediniz? Görünüşe göre, 'f:' taglib'in XML ad alanı hiç açıklanmadı. 'etiketinin tamamı, daha sonra" düz metin "olarak ele alınacaktır (okuyun: herhangi bir EL, daha sonra bir değer ifadesi olarak ele alınır). – BalusC

+0

Ama bildirildi, ben sadece html kodu içermiyordu –