Jsf 计算插入值时的值
我想创建非常简单的JSF网页,用于价格计算:Jsf 计算插入值时的值,jsf,jsf-2.2,Jsf,Jsf 2.2,我想创建非常简单的JSF网页,用于价格计算: <h:form> <h:outputText value="Number of Computers"/> <h:panelGroup layout="block" id="desktopClients_select" style="padding-top: 3px;" styleClass="text"> <h:inputText id="desktopClients" va
<h:form>
<h:outputText value="Number of Computers"/>
<h:panelGroup layout="block" id="desktopClients_select" style="padding-top: 3px;" styleClass="text">
<h:inputText id="desktopClients" value="#{pricingCalculator.computers}">
<f:ajax event="change" render="@form" listener="#{pricingCalculator.calculateTotalPrice}"/>
</h:inputText>
</h:panelGroup>
<h:outputText value="Email support incidents"/>
<h:panelGroup layout="block" id="email_support_incidents" style="padding-top: 3px;" styleClass="text">
<h:inputText id="email_support_incidents_text" value="#{pricingCalculator.emailSupportIncidents}">
<f:ajax event="change" render="@form" listener="#{pricingCalculator.calculateTotalPrice}"/>
</h:inputText>
</h:panelGroup>
<h:outputText value="Phone support incidents"/>
<h:panelGroup layout="block" id="phone_support_incidents" style="padding-top: 3px;" styleClass="text">
<h:inputText id="phone_support_incidents_text" value="#{pricingCalculator.phoneSupportIncidents}">
<f:validateLongRange minimum="1" maximum="150" />
<f:ajax event="change" render="@form" listener="#{pricingCalculator.calculateTotalPrice}"/>
</h:inputText>
</h:panelGroup>
<h:outputText value="Total price"/>
<h:panelGroup layout="block" id="total_price" style="padding-top: 3px;" styleClass="text">
<h:outputText value="#{pricingCalculator.calculateTotalPrice}"/>
</h:panelGroup>
</h:panelGrid>
</h:form>
当我在输入字段中插入一些值时,我想重新计算总价。我现在有两个问题:我得到异常serverError:class javax.el.MethodNotFoundException/pricing_calculator.xhtml@115136 listener=“#{pricingCalculator.calculateTotalPrice}”:找不到方法:com.web.common。PricingCalculator@22939533.calculateTotalPrice(javax.faces.event.AjaxBehaviorEvent)
当我插入新值时,前一个值设置为零。它没有被正确地记住。@BalusC已经给了您答案,但更明确地说,这里引用了Oracle的Java EE 6教程(您应该阅读)中有关方法表达式的一段话: 方法表达式只能在标记属性中使用,也只能在 以下方法:
- 对于单个表达式构造,其中bean指的是JavaBeans组件,方法指的是JavaBeans的方法
组成部分:
getCalculateTotalPrice
重命名为calculateTotalPrice
编辑:以下方法调用的预期签名之间也存在不一致:
您到底不明白异常的哪一部分?它说它希望在提到的消息方法中找到,但您确实没有这样的方法。请检查
。OP基本上用getter方法在1中犯了2个错误。@Named @ViewScoped public class PricingCalculator implements Serializable { private int computers; private float emailSupportIncidents; private float phoneSupportIncidents; private float totalPrice; // Prices for each component and service private final float computers_price = 299; private final float emailSupportIncidents_price = 300; private final float phoneSupportIncidents_price = 150; public String getCalculateTotalPrice() { totalPrice = (computers_price * computers) + (emailSupportIncidents_price * emailSupportIncidents) + (phoneSupportIncidents_price * phoneSupportIncidents); String result = Float.toString(totalPrice); return result; } public int getComputers() { return computers; } public void setComputers(int computers) { this.computers = computers; } public float getEmailSupportIncidents() { return emailSupportIncidents; } public void setEmailSupportIncidents(float emailSupportIncidents) { this.emailSupportIncidents = emailSupportIncidents; } public float getPhoneSupportIncidents() { return phoneSupportIncidents; } public void setPhoneSupportIncidents(float phoneSupportIncidents) { this.phoneSupportIncidents = phoneSupportIncidents; } public float getTotalPrice() { return totalPrice; } public void setTotalPrice(float totalPrice) { this.totalPrice = totalPrice; } }