我用数组中的数据填充转盘。我想用转盘中设置的数据更改数组的数据。
<h:form id="newConditionPanelForm">
<p:panelGrid id="newConditionPanelGrid">
<p:row>
<p:column colspan="2"><h2>Define conditions</h2></p:column>
</p:row>
<p:row>
<p:column>
<p:outputLabel value="Condition Name:" />
</p:column>
<p:column>
<h:outputText value="#{priceManagementMB.conditions.name}"></h:outputText>
</p:column>
</p:row>
<p:row>
<p:column colspan="2" style="text-align:center; width:100%">
<p:carousel id="priceCarousel"
value="#{priceManagementMB.prices}" headerText="Price per hour"
var="priceEdit"
numVisible="1"
style="width:100%"
circular="true"
binding="#{carousel}"
responsive="true">
<h:panelGrid columns="1">
<p:row>
<p:column colspan="2">
<h:outputText value="#{carousel.rowIndex + 1}h00" />
</p:column>
</p:row>
<p:row>
<p:column>
<h:outputText value="Price during given Hour: " />
</p:column>
<p:column>
<p:inplace id="inplacePrice" emptyLabel="click here to edit">
<p:inputText id="priceEdit" value="#{priceEdit}">
</p:inputText>
</p:inplace>
</p:column>
</p:row>
</h:panelGrid>
</p:carousel>
</p:column>
</p:row>
</p:panelGrid>
<h:commandButton value="Submit conditions" update="newConditionPanelGrid"
validateClient="true" action="#{priceManagementMB.updateCondition}">
</h:commandButton>
</h:form>
转盘中inputtext中的元素没有提交给backingbean,我无法使用它们。我做错了什么?如果不在链接或按钮中传输actionPropertyListner,我如何获取数据?模糊之类的事件也可以,但我不知道如何使用它,我需要索引和新的值。该阵列的长度为24,一天中每小时一个。
JSF在提交后尝试调用正确的setter。您没有提供价格类型的详细信息,但我猜您使用了java.lang(Float,Double(中的某个类。
因此,当您使用value="#{priceEdit}"
JSF时,请尝试在Double、Float上使用setPriceEdit
。这里详细解释了EL#{bean.id}如何调用托管bean方法bean.getId((
解决方案是将您的类与setter一起使用(看看java应用程序中最适合赚钱的数据类型是什么?(。如果这个类没有setter,那么您总是可以使用适当的setter编写自己的类(包装器(。
简单示例:
class MoneyWrapper {
private YourMoneyType value;
public setValue(YourMoneyType value){
this.value = value;
}
public YourMoneyType getValue(){
return this.value;
}
}
在您的bean中,您可以使用包含MoneyWrapper元素的数组。最后在视图中使用它,如value="#{priceEdit.value}"