p:carousel中填充了一个数组,并输入了未提交的文本



我用数组中的数据填充转盘。我想用转盘中设置的数据更改数组的数据。

<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}"

相关内容

  • 没有找到相关文章