【问题标题】:Primefaces: Editable object in accordionPanel with Dynamic = TruePrimefaces:手风琴面板中的可编辑对象,Dynamic = True
【发布时间】:2013-02-03 01:31:07
【问题描述】:

我正在尝试实现根据列表动态生成相应面板中的选项卡的功能。

列表是说一些对象,例如人

现在每个人对应的属性,我都显示在表格的每个选项卡中。 值已正确加载,但是当我编辑这些值时,我没有在支持 bean 上获得更新的值,我只获得旧值。

有人能解释一下为什么吗?

这里是代码。

人物对象

public class Person {

    String name;

    //getter setter

    @Override
    public String toString() {
        return name;
    }
}

支持 Bean

@ManagedBean(name = "editor")
public class EditorBean {

    private List<Person> persons = new ArrayList<Person>();

    @PostConstruct
    void init() {
        persons.add(new Person("dhruv"));
        persons.add(new Person("tarun"));
    }

    public void testAction() {
        System.out.println(persons);
    }

    // Getter Setter*****************//
    public List<Person> getPersons() {
        return persons;
    }

    public void setPersons(List<Person> persons) {
        this.persons = persons;
    }
}

XHTML 代码:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui">

<h:head>
</h:head>
<h:body>
    <h1>Hello World PrimeFaces</h1>

    <h:form>
        <p:accordionPanel value="#{editor.persons}" var="person" dynamic="true">

            <p:tab title="#{person}">
                <p:inputText value="#{person.name}"></p:inputText>
            </p:tab>

        </p:accordionPanel>

        <p:commandButton action="#{editor.testAction()}" value="testAction"></p:commandButton>
    </h:form>

</h:body>
</html>

当我使用 dynamic="false" 运行相同的操作时。这工作正常。但在我的真实场景中,我有很多数据无法一次性绘制,这就是我想使用 dynamic = true 的原因。

如果不是通过 dynamic = true ,有人可以解释如何实现这一点吗??

【问题讨论】:

  • editor的范围是什么?
  • 我已经尝试了范围视图和会话...我在这两个范围中得到了相同的结果

标签: ajax jsf-2 primefaces accordion


【解决方案1】:

您的手风琴中有陈旧值的原因是动态手风琴默认为cache="true"。此属性导致手风琴不重新加载新的/更新的值。要在选项卡打开时导致 ajax 刷新,请在手风琴上设置 cache="false"

【讨论】:

  • 问题不在于加载值...问题是将值绑定到支持 bean 以防我在动态 = true 的手风琴面板选项卡中有某种形式..你能帮我吗有了这个??尝试复制上面的示例以更好地理解。
  • @dhroove,你不能在手风琴内部和外部都有一个表单(即嵌套&lt;h:form/&gt;)。那是非法的html。那或者你没有清楚地解释你的问题
  • @kolossus.. 哦,我的错我已经写了表格.. 但它不是我想指定的表格.. 如你所见,我在示例中采用了一个文本字段。当我将列表中的值加载到文本字段时,值会正确加载..但是在编辑这些值..并提交表单之后..我没有在支持 bean 中获得编辑后的值...
  • @dhroove 模型值未更新的通常原因是转换或验证错误。它们都可能无声无息地发生。检查浏览器的开发者控制台以确认 a) 单击按钮时正在发送请求 b) 服务器未在 http 响应负载中以 Validation Error: Value not valid 响应
猜你喜欢
  • 2013-04-12
  • 2017-02-27
  • 2016-01-10
  • 1970-01-01
  • 2021-03-17
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 2021-07-07
相关资源
最近更新 更多