【问题标题】:Update a object in a list更新列表中的对象
【发布时间】:2013-11-03 14:55:58
【问题描述】:

各位,我遇到了以下问题:

我有一个对象 A,它有一个对象列表 B

但是列表B中的对象数量是固定的(等于12,是一个有年份和值的对象)

public class A{
    private Map<Integer, B> itens;         

    //gets e sets
}

public class B{
    private BigDecimal valor;
    private Date mes;  

    //gets e sets
}

我有以下问题:

如何使用 JSF 访问该属性值?

我尝试了以下方法:

<h:outputLabel value="#{msg['label.mes.janeiro']}:" />
<h:inputText id="janeiro" styleClass="input-large money"
    value="#{levantamentoBean.itemCrud.itens[0].valor}">
</h:inputText>

 <h:outputLabel value="#{msg['label.mes.janeiro']}:" />
 <h:inputText id="janeiro" styleClass="input-large money"
        value="#{levantamentoBean.itemCrud.itens[0].valor}">
        <f:convertNumber pattern="#,##0.00" minFractionDigits="2" />
 </h:inputText>

当我在我的 Bean 中收到对象时,它没有附带我在输入中输入的更新值。有人可以告诉我这是否可能?

【问题讨论】:

  • 我认为 BigDecimal 自动转换将是问题所在。我懒得去测试了。尝试为测试建议设置不同的类型
  • 为什么要使用List 而不是Map?使用地图,您可以按月份名称进行索引。
  • 您的代码不是很清楚,但似乎您正在返回一个 A 类值,这是必要的吗?为什么不返回元素(B 类)?
  • 就像@danRod 说的,你的问题不清楚。您是否只对列表的第 0 项感兴趣?无论如何,将you should move that logic in getValorPorMes 转换为@PostConstruct 方法。您尝试过的两个选项都不起作用是有正当理由的
  • @PauloDiogo 呵呵,告诉过你:)

标签: jsf


【解决方案1】:

我的问题就这样解决了:

<h:commandLink value="Save" actionListener="#{myBean.saveItem}">                                
    <f:ajax onevent="handleOutcome" execute="@all" 
             render=":formulario:table values descriptionNeed" />
</h:commandLink>

我将execute="@all" 放在&lt;h:commandLink&gt; 中,这会将All component identifiers 发送到服务器。

参考资料:

http://docs.oracle.com/javaee/6/tutorial/doc/gkabr.html

What is <f:ajax execute="@all"> really supposed to do? It POSTs only the enclosing form

https://community.jboss.org/message/563111

http://www.mkyong.com/jsf2/jsf-2-0-ajax-hello-world-example/

就是这样!

【讨论】:

    【解决方案2】:
    <h:inputText id="janeiro" styleClass="input-large money" 
            value="#{levantamentoBean.itemCrud.itens[0].valor}">
        <f:converter converterId="javax.faces.BigDecimal"/>
    </h:inputText>
    

    如果您需要模式转换,请参阅https://community.jboss.org/message/483357#483357

    【讨论】:

    • man,如果我在提交表单时不更新字段,则第二次保存以前的值,例如:第一个值是1,我将值更改为1000,保存的值是 1,在第二个时刻我不更新字段,值是 1000,如果我将值更改为 2000,保存的值是 1000。
    • 请向我们展示您的代码的更多详细信息。 AB 类有点太不具体了。 ;-) 另外请张贴 facelet 的相关部分,即表单及其活动元素。
    猜你喜欢
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多