gpt4 book ai didi

java - 如何更改outputText的值?

转载 作者:行者123 更新时间:2023-12-01 11:06:09 26 4
gpt4 key购买 nike

我正在开发一个系统,用户选择一些复选框,每个复选框都有一个货币值,我想根据选定的复选框更改输出文本。

示例:我有三个复选框,每个复选框都有 10.00 美元。如果用户仅选择两个复选框,则输出文本必须显示 $20.00。如果用户选择最后一项,则输出文本必须显示 $30.00。而这一切都无需重新加载页面。

到目前为止我的代码:

<h:form id="form">
<p:fieldset legend="Tipo base do site:" style="margin-bottom:20px">
<h:panelGrid columns="2" cellpadding="5">
<p:dataList value="#{tiposIndexView.tipos}" var="tipo"
type="ordered" >
R$
<h:outputText value="#{tipo.preco}" >
<f:convertNumber pattern="#0.00" />
</h:outputText>
</p:dataList>
<p:selectOneRadio id="tipo" value="#{tiposIndexView.tipos}"
layout="grid" columns="1">
<f:selectItems value="#{tiposIndexView.tipos}" var="tipo"
itemLabel="#{tipo.nome}" itemValue="#{tipo.nome}" />
</p:selectOneRadio>
</h:panelGrid>
</p:fieldset>

<p:fieldset legend="Sistemas adicionais:" style="margin-bottom:20px">
<h:panelGrid columns="2" cellpadding="5">
<p:dataList value="#{sistemasIndexView.sistemas}" var="sistema"
type="ordered" >
R$
<h:outputText value="#{sistema.preco}" >
<f:convertNumber pattern="#0.00" />
</h:outputText>
</p:dataList>
<p:selectManyCheckbox style="margin-top:0px;!important" id="grid" value="#{sistemasIndexView.sistemas}" layout="grid" columns="1">
<f:selectItems value="#{sistemasIndexView.sistemas}" var="sistema" itemLabel="#{sistema.nome}" itemValue="#{sistema}" />
</p:selectManyCheckbox>
</h:panelGrid>
</p:fieldset>

<p:fieldset legend="Valor total:">
<h:outputText>
R$
<f:convertNumber pattern="#0.00" />
</h:outputText>
</p:fieldset>
</h:form>

最后一个输出文本是我想显示总值的地方。

还有一个问题,每次我打开网站时,所有复选框都会开始选中,而我希望所有复选框都开始不选中。复选框代码:

@ManagedBean
@ViewScoped
public class SistemasIndexView implements Serializable{
private static final long serialVersionUID = -2697991732915561009L;
private List<Sistema> sistemas;

@PostConstruct
public void init(){
sistemas = new ArrayList<>();
sistemas.add(new Sistema("Teste", 200));
sistemas.add(new Sistema("Exemplo", 300));
sistemas.add(new Sistema("gsdfaf", 50));
}

public List<Sistema> getSistemas() {
return sistemas;
}

public void setSistemas(List<Sistema> sistemas) {
this.sistemas = sistemas;
}
}

最佳答案

您需要 2 个列表,一个用于存储所有复选框,第二个用于存储选定的复选框。这就是您选中所有复选框的原因,因为您选择的值与所有可能的值都相同。

CSS错误:style="margin-top:0px;!important"应该是style="margin-top:0px !important;"

你的支持 bean 中需要的东西(带有 getter/setter):

  • 所选项目的列表 private List<Sistema> selectedSistemas;
  • 计算总和的字段 private int sum
  • 产量计算方法public void calculateSum()

代码

<p:selectManyCheckbox style="margin-top:0px !important;" id="grid" value="#{sistemasIndexView.selectedSistemas}" layout="grid" columns="1">
<f:selectItems value="#{sistemasIndexView.sistemas}" var="sistema" itemLabel="#{sistema.nome}" itemValue="#{sistema}" />
<p:ajax process="@this" listener="#{test.calculateSum}" update="sum"/>
</p:selectManyCheckbox>

<h:outputText id="sum" value="#{test.sum}">
<f:convertNumber pattern="#0.00" />
</h:outputText>

计算方法,您可以更改它,但根据您编写的内容,它可以完成工作

public void calculateSum() {
sum = selectedSistemas.size() * 10;
}

关于java - 如何更改outputText的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32926589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com