【问题标题】:How to dynamically add an input field [duplicate]如何动态添加输入字段[重复]
【发布时间】:2013-05-31 17:23:09
【问题描述】:

我想添加动态输入字段。喜欢

PF有没有好的组件说明如何添加这样的组件?

请给我一个关于你将如何开发它的提示,因为我目前不知道。

非常感谢您的回答。

我的技术栈:

  • 休眠:4.0.1.Final
  • 春季:3.1.1.RELEASE
  • Primefaces:3.5
  • jsf 版本:2.2.0-m08
  • PrimefacesMobile 版本:0.9.3
  • Apache Tomcat/7.0.12

【问题讨论】:

  • 再一次,您尝试过什么?显示代码而不仅仅是图像。此外,您的技术堆栈不会帮助我们为您提供正确的方向。
  • @maximus 这是纯 JSF 2.0 stackoverflow.com/a/16762538/354831 中的一个示例,可以根据您的需要进行修改。
  • @AlexandreLavoie 非常感谢您的出色回答!!!

标签: jsf primefaces


【解决方案1】:

也许下面的代码可以帮助你,恐怕没有一个组件可以解决这个问题(至少据我所知):

HTML

<h:form>
    <ui:repeat value=#{bean.values} 
               var="value">
        <h:inputText value="#{value}" />
        <br />
    </ui:repeat>

    <h:commandButton value="Extend">
        <f:ajax listener="#{bean.extend}"
                process="@form" 
                render="@form" />
    </h:commandButton>
    <h:commandButton action="#{bean.submit}" 
                     value="Save" />
</h:form>

@ManagedBean
@ViewScoped
public class Bean {
    private List<String> values;

    @PostConstruct
    public void init() {
        values = new ArrayList();
        values.add("");
    }

    public void submit() {
        // save values in database
    }

    public void extend() {
        values.add("");
    }

    public void setValues(List<String> values) {
        this.values = values;
    }

    public List<String> getValues() {
        return values;
    }
}

【讨论】:

  • 请参考JSTL in JSF2 Facelets… makes sense?以了解在这种情况下使用&lt;c:forEach&gt;会出现问题。相反,将其替换为 &lt;ui:repeat&gt; 以避免出现 ajax 渲染/更新问题。否则,请在发布之前测试您的答案。
  • @LuiggiMendoza 好电话,从由于阶段需要&lt;c:forEach&gt; 的情况开始。在这种情况下,&lt;ui:repeat&gt; 可以正常工作!关于测试,附近没有IDE。
  • 我试过这个,但是当你有一个 List 时它不起作用。您无法更改列表中的字符串,因为它们是不可变的,因此新值不会到达支持 bean。
猜你喜欢
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
相关资源
最近更新 更多